Moved some OpenGL utilities into OOOpenGL.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@976 127b21dd-08f5-0310-b4b7-95ae10353056
This commit is contained in:
parent
97f91f6a18
commit
55f832da66
@ -305,6 +305,7 @@
|
||||
1A472917096B5454000E78D8 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A472916096B5454000E78D8 /* CoreAudio.framework */; };
|
||||
1A472921096B5468000E78D8 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A47291F096B5468000E78D8 /* AudioToolbox.framework */; };
|
||||
1A472922096B5468000E78D8 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A472920096B5468000E78D8 /* AudioUnit.framework */; };
|
||||
1A5AA3230C0098AF0029C78A /* OOOpenGL.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A5AA3220C0098AF0029C78A /* OOOpenGL.m */; };
|
||||
1A5DB1EA0BBD8F0000D57389 /* OOConstToString.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A5DB1E80BBD8F0000D57389 /* OOConstToString.h */; };
|
||||
1A5DB1EB0BBD8F0000D57389 /* OOConstToString.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A5DB1E90BBD8F0000D57389 /* OOConstToString.m */; };
|
||||
1A5DBAA60BC000DC00D57389 /* OOJavaScriptEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A5DBA9A0BC000DC00D57389 /* OOJavaScriptEngine.h */; };
|
||||
@ -1115,6 +1116,7 @@
|
||||
1A472916096B5454000E78D8 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; };
|
||||
1A47291F096B5468000E78D8 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = "<absolute>"; };
|
||||
1A472920096B5468000E78D8 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = "<absolute>"; };
|
||||
1A5AA3220C0098AF0029C78A /* OOOpenGL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OOOpenGL.m; sourceTree = "<group>"; };
|
||||
1A5BF2720916D47300BF238F /* Oolite-importer.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "Oolite-importer.xcodeproj"; path = "Oolite-importer/Oolite-importer.xcodeproj"; sourceTree = "<group>"; };
|
||||
1A5DB1E80BBD8F0000D57389 /* OOConstToString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OOConstToString.h; sourceTree = "<group>"; };
|
||||
1A5DB1E90BBD8F0000D57389 /* OOConstToString.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OOConstToString.m; sourceTree = "<group>"; };
|
||||
@ -1692,6 +1694,7 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
25F3E63A0994F08A002F25FD /* OOOpenGL.h */,
|
||||
1A5AA3220C0098AF0029C78A /* OOOpenGL.m */,
|
||||
1A2A1DEA0BD2A28E00152975 /* OOMacroOpenGL.h */,
|
||||
1A43234A0BCFC9BB00F65914 /* OOOpenGLExtensionManager.h */,
|
||||
1A43234B0BCFC9BB00F65914 /* OOOpenGLExtensionManager.m */,
|
||||
@ -2569,6 +2572,7 @@
|
||||
1A2A1B170BD2774300152975 /* OODrawable.m in Sources */,
|
||||
1A2A1B2D0BD277D800152975 /* OOSelfDrawingEntity.m in Sources */,
|
||||
1A2A1CAD0BD2914F00152975 /* OOMesh.m in Sources */,
|
||||
1A5AA3230C0098AF0029C78A /* OOOpenGL.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -186,7 +186,7 @@ MA 02110-1301, USA.
|
||||
glDisable(GL_FOG);
|
||||
}
|
||||
//
|
||||
CheckOpenGLErrors([NSString stringWithFormat:@"DustEntity after drawing %@", self]);
|
||||
CheckOpenGLErrors(@"DustEntity after drawing %@", self);
|
||||
//
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,6 @@ MA 02110-1301, USA.
|
||||
#import "OOOpenGLExtensionManager.h"
|
||||
|
||||
|
||||
static NSString * const kOOLogOpenGLStateDump = @"rendering.opengl.stateDump";
|
||||
static NSString * const kOOLogEntityDataNotFound = @"entity.loadMesh.failed.fileNotFound";
|
||||
static NSString * const kOOLogEntityTooManyVertices = @"entity.loadMesh.failed.tooManyVertices";
|
||||
static NSString * const kOOLogEntityTooManyFaces = @"entity.loadMesh.failed.tooManyFaces";
|
||||
@ -222,7 +221,7 @@ static NSString * const kOOLogEntityTooManyFaces = @"entity.loadMesh.failed.to
|
||||
}
|
||||
}
|
||||
if (!isSmoothShaded) glShadeModel(GL_SMOOTH);
|
||||
CheckOpenGLErrors([NSString stringWithFormat:@"Entity after drawing %@", self]);
|
||||
CheckOpenGLErrors(@"OOSelfDrawingEntity after drawing %@", self);
|
||||
brokenInRender = NO;
|
||||
NS_HANDLER
|
||||
if (!brokenInRender)
|
||||
@ -354,9 +353,6 @@ static NSString * const kOOLogEntityTooManyFaces = @"entity.loadMesh.failed.to
|
||||
glNewList(displayListName, GL_COMPILE);
|
||||
[self drawEntity:YES:NO]; // immediate YES translucent NO
|
||||
glEndList();
|
||||
//
|
||||
CheckOpenGLErrors([NSString stringWithFormat:@"Entity after generateDisplayList for %@", self]);
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1543,12 +1543,11 @@ static Vector circleVertex[65]; // holds vector coordinates for a unit circle
|
||||
break;
|
||||
|
||||
default :
|
||||
// NSLog(@"drawParticle immediate:%@ translucent:%@", immediate? @"YES":@"NO", translucent? @"YES":@"NO");
|
||||
[self drawParticle];
|
||||
break;
|
||||
}
|
||||
}
|
||||
CheckOpenGLErrors([NSString stringWithFormat:@"ParticleEntity after drawing %@ %@", self, debug_type]);
|
||||
CheckOpenGLErrors(@"ParticleEntity after drawing %@ %@", self, debug_type);
|
||||
}
|
||||
|
||||
- (void) drawSubEntity:(BOOL) immediate :(BOOL) translucent
|
||||
|
@ -1493,7 +1493,7 @@ void setUpSinTable()
|
||||
break;
|
||||
}
|
||||
glFrontFace(GL_CCW); // face culling - front faces are AntiClockwise!
|
||||
CheckOpenGLErrors([NSString stringWithFormat:@"PlanetEntity after drawing %@", self]);
|
||||
CheckOpenGLErrors(@"PlanetEntity after drawing %@", self);
|
||||
}
|
||||
|
||||
void drawBall (double radius, int step, double z_distance)
|
||||
|
@ -2081,8 +2081,6 @@ double scoopSoundPlayTime = 0.0;
|
||||
return; // don't draw
|
||||
|
||||
[super drawEntity: immediate : translucent];
|
||||
|
||||
CheckOpenGLErrors([NSString stringWithFormat:@"after drawing PlayerEntity %@", self]);
|
||||
}
|
||||
|
||||
- (BOOL) massLocked
|
||||
|
@ -151,7 +151,7 @@ Ringdata ringentity;
|
||||
}
|
||||
}
|
||||
glEnable(GL_LIGHTING);
|
||||
CheckOpenGLErrors([NSString stringWithFormat:@"RingEntity after drawing %@", self]);
|
||||
CheckOpenGLErrors(@"RingEntity after drawing %@", self);
|
||||
}
|
||||
|
||||
- (BOOL) canCollide
|
||||
|
@ -242,7 +242,7 @@ static OOTexture *sStarTexture, *sBlobTexture;
|
||||
glEnable(GL_DEPTH_TEST); // read the depth buffer
|
||||
glDepthMask(GL_TRUE); // restore write to depth buffer
|
||||
}
|
||||
CheckOpenGLErrors([NSString stringWithFormat:@"SkyEntity after drawing %@", self]);
|
||||
CheckOpenGLErrors(@"SkyEntity after drawing %@", self);
|
||||
}
|
||||
|
||||
@end
|
||||
@ -478,8 +478,6 @@ static OOTexture *sStarTexture, *sBlobTexture;
|
||||
glNewList(displayListName, GL_COMPILE);
|
||||
[self drawEntity:YES:NO]; // immediate YES translucent NO
|
||||
glEndList();
|
||||
|
||||
CheckOpenGLErrors([NSString stringWithFormat:@"Entity after generateDisplayList for %@", self]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -263,7 +263,7 @@ MA 02110-1301, USA.
|
||||
|
||||
glEnable(GL_CULL_FACE); // face culling
|
||||
}
|
||||
CheckOpenGLErrors(@"after drawing WormholeEntity.");
|
||||
CheckOpenGLErrors(@"WormholeEntity after drawing %@", self);
|
||||
}
|
||||
|
||||
void drawWormholeCorona (double inner_radius, double outer_radius, int step, double z_distance, GLfloat* col4v1)
|
||||
|
@ -316,7 +316,7 @@ float char_widths[128] = {
|
||||
NSLog(@"DEBUG HeadUpDisplay does not respond to '%@'",[info objectForKey:SELECTOR_KEY]);
|
||||
}
|
||||
//
|
||||
CheckOpenGLErrors([NSString stringWithFormat:@"HeadUpDisplay after drawHUDItem %@", info]);
|
||||
CheckOpenGLErrors(@"HeadUpDisplay after drawHUDItem %@", info);
|
||||
//
|
||||
}
|
||||
|
||||
|
@ -136,22 +136,6 @@ shaderBindingTarget:(id<OOWeakReferenceSupport>)object;
|
||||
@end
|
||||
|
||||
|
||||
// TODO: move this stuff to OOOpenGL
|
||||
|
||||
// keep track of various OpenGL states
|
||||
void my_glEnable(GLenum gl_state);
|
||||
void my_glDisable(GLenum gl_state);
|
||||
|
||||
// log a list of current states
|
||||
//
|
||||
void LogOpenGLState();
|
||||
|
||||
// check for OpenGL errors, reporting them if where is not nil
|
||||
//
|
||||
BOOL CheckOpenGLErrors(NSString* where);
|
||||
|
||||
|
||||
|
||||
#import "OOCacheManager.h"
|
||||
@interface OOCacheManager (Octree)
|
||||
|
||||
|
@ -35,8 +35,6 @@ MA 02110-1301, USA.
|
||||
#import "OOOpenGLExtensionManager.h"
|
||||
|
||||
|
||||
static NSString * const kOOLogOpenGLExtensionsVAR = @"rendering.opengl.extensions.var";
|
||||
static NSString * const kOOLogOpenGLStateDump = @"rendering.opengl.stateDump";
|
||||
static NSString * const kOOLogMeshDataNotFound = @"mesh.load.failed.fileNotFound";
|
||||
static NSString * const kOOLogMeshTooManyVertices = @"mesh.load.failed.tooManyVertices";
|
||||
static NSString * const kOOLogMeshTooManyFaces = @"mesh.load.failed.tooManyFaces";
|
||||
@ -249,7 +247,7 @@ shaderBindingTarget:(id<OOWeakReferenceSupport>)object
|
||||
#endif
|
||||
|
||||
[OOMaterial applyNone];
|
||||
CheckOpenGLErrors([NSString stringWithFormat:@"OOMesh after drawing %@", self]);
|
||||
CheckOpenGLErrors(@"OOMesh after drawing %@", self);
|
||||
|
||||
glPopAttrib();
|
||||
}
|
||||
@ -274,7 +272,7 @@ shaderBindingTarget:(id<OOWeakReferenceSupport>)object
|
||||
|
||||
- (Geometry *)geometry
|
||||
{
|
||||
Geometry *result = [(Geometry *)[Geometry alloc] initWithCapacity:faceCount];
|
||||
Geometry *result = [[Geometry alloc] initWithCapacity:faceCount];
|
||||
int i;
|
||||
for (i = 0; i < faceCount; i++)
|
||||
{
|
||||
@ -1237,350 +1235,6 @@ shaderBindingTarget:(id<OOWeakReferenceSupport>)target
|
||||
@end
|
||||
|
||||
|
||||
// log a list of current states
|
||||
//
|
||||
// we need to report on the material properties
|
||||
GLfloat stored_mat_ambient[4];
|
||||
GLfloat stored_mat_diffuse[4];
|
||||
GLfloat stored_mat_emission[4];
|
||||
GLfloat stored_mat_specular[4];
|
||||
GLfloat stored_mat_shininess[1];
|
||||
//
|
||||
GLfloat stored_current_color[4];
|
||||
//
|
||||
GLint stored_gl_shade_model[1];
|
||||
//
|
||||
GLint stored_gl_texture_env_mode[1];
|
||||
//
|
||||
GLint stored_gl_cull_face_mode[1];
|
||||
//
|
||||
GLint stored_gl_front_face[1];
|
||||
//
|
||||
GLint stored_gl_blend_src[1];
|
||||
GLint stored_gl_blend_dst[1];
|
||||
//
|
||||
GLenum stored_errCode;
|
||||
//
|
||||
void LogOpenGLState()
|
||||
{
|
||||
if (!OOLogWillDisplayMessagesInClass(kOOLogOpenGLStateDump)) return;
|
||||
|
||||
// we need to report on the material properties
|
||||
GLfloat mat_ambient[4];
|
||||
GLfloat mat_diffuse[4];
|
||||
GLfloat mat_emission[4];
|
||||
GLfloat mat_specular[4];
|
||||
GLfloat mat_shininess[1];
|
||||
//
|
||||
GLfloat current_color[4];
|
||||
//
|
||||
GLint gl_shade_model[1];
|
||||
//
|
||||
GLint gl_texture_env_mode[1];
|
||||
NSString* tex_env_mode_string = nil;
|
||||
//
|
||||
GLint gl_cull_face_mode[1];
|
||||
NSString* cull_face_mode_string = nil;
|
||||
//
|
||||
GLint gl_front_face[1];
|
||||
NSString* front_face_string = nil;
|
||||
//
|
||||
GLint gl_blend_src[1];
|
||||
NSString* blend_src_string = nil;
|
||||
GLint gl_blend_dst[1];
|
||||
NSString* blend_dst_string = nil;
|
||||
//
|
||||
GLenum errCode;
|
||||
const GLubyte *errString;
|
||||
|
||||
glGetMaterialfv( GL_FRONT, GL_AMBIENT, mat_ambient);
|
||||
glGetMaterialfv( GL_FRONT, GL_DIFFUSE, mat_diffuse);
|
||||
glGetMaterialfv( GL_FRONT, GL_EMISSION, mat_emission);
|
||||
glGetMaterialfv( GL_FRONT, GL_SPECULAR, mat_specular);
|
||||
glGetMaterialfv( GL_FRONT, GL_SHININESS, mat_shininess);
|
||||
//
|
||||
glGetFloatv( GL_CURRENT_COLOR, current_color);
|
||||
//
|
||||
glGetIntegerv( GL_SHADE_MODEL, gl_shade_model);
|
||||
//
|
||||
glGetIntegerv( GL_BLEND_SRC, gl_blend_src);
|
||||
switch (gl_blend_src[0])
|
||||
{
|
||||
case GL_ZERO:
|
||||
blend_src_string = @"GL_ZERO";
|
||||
break;
|
||||
case GL_ONE:
|
||||
blend_src_string = @"GL_ONE";
|
||||
break;
|
||||
case GL_DST_COLOR:
|
||||
blend_src_string = @"GL_DST_COLOR";
|
||||
break;
|
||||
case GL_SRC_COLOR:
|
||||
blend_src_string = @"GL_SRC_COLOR";
|
||||
break;
|
||||
case GL_ONE_MINUS_DST_COLOR:
|
||||
blend_src_string = @"GL_ONE_MINUS_DST_COLOR";
|
||||
break;
|
||||
case GL_ONE_MINUS_SRC_COLOR:
|
||||
blend_src_string = @"GL_ONE_MINUS_SRC_COLOR";
|
||||
break;
|
||||
case GL_SRC_ALPHA:
|
||||
blend_src_string = @"GL_SRC_ALPHA";
|
||||
break;
|
||||
case GL_DST_ALPHA:
|
||||
blend_src_string = @"GL_DST_ALPHA";
|
||||
break;
|
||||
case GL_ONE_MINUS_SRC_ALPHA:
|
||||
blend_src_string = @"GL_ONE_MINUS_SRC_ALPHA";
|
||||
break;
|
||||
case GL_ONE_MINUS_DST_ALPHA:
|
||||
blend_src_string = @"GL_ONE_MINUS_DST_ALPHA";
|
||||
break;
|
||||
case GL_SRC_ALPHA_SATURATE:
|
||||
blend_src_string = @"GL_SRC_ALPHA_SATURATE";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//
|
||||
glGetIntegerv( GL_BLEND_DST, gl_blend_dst);
|
||||
switch (gl_blend_dst[0])
|
||||
{
|
||||
case GL_ZERO:
|
||||
blend_dst_string = @"GL_ZERO";
|
||||
break;
|
||||
case GL_ONE:
|
||||
blend_dst_string = @"GL_ONE";
|
||||
break;
|
||||
case GL_DST_COLOR:
|
||||
blend_dst_string = @"GL_DST_COLOR";
|
||||
break;
|
||||
case GL_SRC_COLOR:
|
||||
blend_dst_string = @"GL_SRC_COLOR";
|
||||
break;
|
||||
case GL_ONE_MINUS_DST_COLOR:
|
||||
blend_dst_string = @"GL_ONE_MINUS_DST_COLOR";
|
||||
break;
|
||||
case GL_ONE_MINUS_SRC_COLOR:
|
||||
blend_dst_string = @"GL_ONE_MINUS_SRC_COLOR";
|
||||
break;
|
||||
case GL_SRC_ALPHA:
|
||||
blend_dst_string = @"GL_SRC_ALPHA";
|
||||
break;
|
||||
case GL_DST_ALPHA:
|
||||
blend_dst_string = @"GL_DST_ALPHA";
|
||||
break;
|
||||
case GL_ONE_MINUS_SRC_ALPHA:
|
||||
blend_dst_string = @"GL_ONE_MINUS_SRC_ALPHA";
|
||||
break;
|
||||
case GL_ONE_MINUS_DST_ALPHA:
|
||||
blend_dst_string = @"GL_ONE_MINUS_DST_ALPHA";
|
||||
break;
|
||||
case GL_SRC_ALPHA_SATURATE:
|
||||
blend_dst_string = @"GL_SRC_ALPHA_SATURATE";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//
|
||||
glGetIntegerv( GL_CULL_FACE_MODE, gl_cull_face_mode);
|
||||
switch (gl_cull_face_mode[0])
|
||||
{
|
||||
case GL_BACK:
|
||||
cull_face_mode_string = @"GL_BACK";
|
||||
break;
|
||||
case GL_FRONT:
|
||||
cull_face_mode_string = @"GL_FRONT";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//
|
||||
glGetIntegerv( GL_FRONT_FACE, gl_front_face);
|
||||
switch (gl_front_face[0])
|
||||
{
|
||||
case GL_CCW:
|
||||
front_face_string = @"GL_CCW";
|
||||
break;
|
||||
case GL_CW:
|
||||
front_face_string = @"GL_CW";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//
|
||||
glGetTexEnviv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, gl_texture_env_mode);
|
||||
switch (gl_texture_env_mode[0])
|
||||
{
|
||||
case GL_DECAL:
|
||||
tex_env_mode_string = @"GL_DECAL";
|
||||
break;
|
||||
case GL_REPLACE:
|
||||
tex_env_mode_string = @"GL_REPLACE";
|
||||
break;
|
||||
case GL_MODULATE:
|
||||
tex_env_mode_string = @"GL_MODULATE";
|
||||
break;
|
||||
case GL_BLEND:
|
||||
tex_env_mode_string = @"GL_BLEND";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//
|
||||
if ((errCode =glGetError()) != GL_NO_ERROR)
|
||||
{
|
||||
errString = gluErrorString(errCode);
|
||||
OOLog(kOOLogOpenGLError, @"OpenGL error: '%s' (%u) in: %@", errString, errCode);
|
||||
}
|
||||
|
||||
/*-- MATERIALS --*/
|
||||
if ((stored_mat_ambient[0] != mat_ambient[0])||(stored_mat_ambient[1] != mat_ambient[1])||(stored_mat_ambient[2] != mat_ambient[2])||(stored_mat_ambient[3] != mat_ambient[2]))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_AMBIENT ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
mat_ambient[0], mat_ambient[1], mat_ambient[2], mat_ambient[3]);
|
||||
if ((stored_mat_diffuse[0] != mat_diffuse[0])||(stored_mat_diffuse[1] != mat_diffuse[1])||(stored_mat_diffuse[2] != mat_diffuse[2])||(stored_mat_diffuse[3] != mat_diffuse[2]))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_DIFFUSE ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
mat_diffuse[0], mat_diffuse[1], mat_diffuse[2], mat_diffuse[3]);
|
||||
if ((stored_mat_emission[0] != mat_emission[0])||(stored_mat_emission[1] != mat_emission[1])||(stored_mat_emission[2] != mat_emission[2])||(stored_mat_emission[3] != mat_emission[2]))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_EMISSION ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
mat_emission[0], mat_emission[1], mat_emission[2], mat_emission[3]);
|
||||
if ((stored_mat_specular[0] != mat_specular[0])||(stored_mat_specular[1] != mat_specular[1])||(stored_mat_specular[2] != mat_specular[2])||(stored_mat_specular[3] != mat_specular[2]))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_SPECULAR ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
mat_specular[0], mat_specular[1], mat_specular[2], mat_specular[3]);
|
||||
if (stored_mat_shininess[0] != mat_shininess[0])
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_SHININESS ( %.2ff)", mat_shininess[0]);
|
||||
stored_mat_ambient[0] = mat_ambient[0]; stored_mat_ambient[1] = mat_ambient[1]; stored_mat_ambient[2] = mat_ambient[2]; stored_mat_ambient[3] = mat_ambient[3];
|
||||
stored_mat_diffuse[0] = mat_diffuse[0]; stored_mat_diffuse[1] = mat_diffuse[1]; stored_mat_diffuse[2] = mat_diffuse[2]; stored_mat_diffuse[3] = mat_diffuse[3];
|
||||
stored_mat_emission[0] = mat_emission[0]; stored_mat_emission[1] = mat_emission[1]; stored_mat_emission[2] = mat_emission[2]; stored_mat_emission[3] = mat_emission[3];
|
||||
stored_mat_specular[0] = mat_specular[0]; stored_mat_specular[1] = mat_specular[1]; stored_mat_specular[2] = mat_specular[2]; stored_mat_specular[3] = mat_specular[3];
|
||||
stored_mat_shininess[0] = mat_shininess[0];
|
||||
/*-- MATERIALS --*/
|
||||
|
||||
//
|
||||
/*-- LIGHTS --*/
|
||||
if (glIsEnabled(GL_LIGHTING))
|
||||
{
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHTING :ENABLED:");
|
||||
if (glIsEnabled(GL_LIGHT0))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT0 :ENABLED:");
|
||||
if (glIsEnabled(GL_LIGHT1))
|
||||
{
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT1 :ENABLED:");
|
||||
GLfloat light_ambient[4];
|
||||
GLfloat light_diffuse[4];
|
||||
GLfloat light_specular[4];
|
||||
glGetLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient);
|
||||
glGetLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse);
|
||||
glGetLightfv(GL_LIGHT1, GL_SPECULAR, light_specular);
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT1 GL_AMBIENT ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
light_ambient[0], light_ambient[1], light_ambient[2], light_ambient[3]);
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT1 GL_DIFFUSE ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
light_diffuse[0], light_diffuse[1], light_diffuse[2], light_diffuse[3]);
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT1 GL_SPECULAR ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
light_specular[0], light_specular[1], light_specular[2], light_specular[3]);
|
||||
}
|
||||
if (glIsEnabled(GL_LIGHT2))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT2 :ENABLED:");
|
||||
if (glIsEnabled(GL_LIGHT3))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT3 :ENABLED:");
|
||||
if (glIsEnabled(GL_LIGHT4))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT4 :ENABLED:");
|
||||
if (glIsEnabled(GL_LIGHT5))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT5 :ENABLED:");
|
||||
if (glIsEnabled(GL_LIGHT6))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT6 :ENABLED:");
|
||||
if (glIsEnabled(GL_LIGHT7))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT7 :ENABLED:");
|
||||
}
|
||||
/*-- LIGHTS --*/
|
||||
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_CURRENT_COLOR ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
current_color[0], current_color[1], current_color[2], current_color[3]);
|
||||
//
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_TEXTURE_ENV_MODE :%@:", tex_env_mode_string);
|
||||
//
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_SHADEMODEL :%@:", (gl_shade_model[0] == GL_SMOOTH)? @"GL_SMOOTH": @"GL_FLAT");
|
||||
//
|
||||
if (glIsEnabled(GL_FOG))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_FOG :ENABLED:");
|
||||
//
|
||||
if (glIsEnabled(GL_COLOR_MATERIAL))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_COLOR_MATERIAL :ENABLED:");
|
||||
//
|
||||
if (glIsEnabled(GL_BLEND))
|
||||
{
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_BLEND :ENABLED:");
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_BLEND_FUNC (:%@:, :%@:)", blend_src_string, blend_dst_string);
|
||||
}
|
||||
//
|
||||
if (glIsEnabled(GL_CULL_FACE))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_CULL_FACE :ENABLED:");
|
||||
//
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_CULL_FACE_MODE :%@:", cull_face_mode_string);
|
||||
//
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_FRONT_FACE :%@:", front_face_string);
|
||||
}
|
||||
|
||||
// check for OpenGL errors, reporting them if where is not nil
|
||||
//
|
||||
BOOL CheckOpenGLErrors(NSString* where)
|
||||
{
|
||||
GLenum errCode;
|
||||
const GLubyte *errString = NULL;
|
||||
BOOL errorOccurred = NO;
|
||||
|
||||
// Short-circut here, because glGetError() is quite expensive.
|
||||
if (OOLogWillDisplayMessagesInClass(kOOLogOpenGLError))
|
||||
{
|
||||
errCode = glGetError();
|
||||
|
||||
if (errCode != GL_NO_ERROR)
|
||||
{
|
||||
errorOccurred = YES;
|
||||
errString = gluErrorString(errCode);
|
||||
if (where == nil) where = @"<unknown>";
|
||||
|
||||
OOLog(kOOLogOpenGLError, @"OpenGL error: '%s' (%u) in: %@", errString, errCode, where);
|
||||
}
|
||||
}
|
||||
return errorOccurred;
|
||||
}
|
||||
|
||||
// keep track of various OpenGL states
|
||||
//
|
||||
static BOOL mygl_texture_2d;
|
||||
|
||||
void my_glEnable(GLenum gl_state)
|
||||
{
|
||||
switch (gl_state)
|
||||
{
|
||||
case GL_TEXTURE_2D:
|
||||
if (mygl_texture_2d)
|
||||
return;
|
||||
mygl_texture_2d = YES;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
glEnable(gl_state);
|
||||
}
|
||||
//
|
||||
void my_glDisable(GLenum gl_state)
|
||||
{
|
||||
switch (gl_state)
|
||||
{
|
||||
case GL_TEXTURE_2D:
|
||||
if (!mygl_texture_2d)
|
||||
return;
|
||||
mygl_texture_2d = NO;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
glDisable(gl_state);
|
||||
}
|
||||
|
||||
|
||||
static NSString * const kOOCacheMeshes = @"OOMesh";
|
||||
|
||||
@implementation OOCacheManager (OOMesh)
|
||||
@ -1602,7 +1256,6 @@ static NSString * const kOOCacheMeshes = @"OOMesh";
|
||||
@end
|
||||
|
||||
|
||||
|
||||
static NSString * const kOOCacheOctrees = @"octrees";
|
||||
|
||||
@implementation OOCacheManager (Octree)
|
||||
|
@ -4,6 +4,9 @@ OOOpenGL.h
|
||||
|
||||
Do whatever is appropriate to get gl.h, glu.h and glext.h included.
|
||||
|
||||
Also declares OpenGL-related utility functions.
|
||||
|
||||
|
||||
Oolite
|
||||
Copyright (C) 2004-2007 Giles C Williams and contributors
|
||||
|
||||
@ -74,3 +77,18 @@ typedef uintptr_t OOOpenGLContext; // Opaque context identifier
|
||||
|
||||
|
||||
#define NULL_SHADER ((GLhandleARB)0)
|
||||
|
||||
|
||||
/* CheckOpenGLErrors()
|
||||
Check for and log OpenGL errors, and returns YES if an error occurred.
|
||||
NOTE: this is controlled by the log message class rendering.opengl.error.
|
||||
If logging is disabled, no error checking will occur. This is done
|
||||
because glGetError() is quite expensive, requiring a full OpenGL
|
||||
state sync.
|
||||
*/
|
||||
BOOL CheckOpenGLErrors(NSString *format, ...);
|
||||
|
||||
/* LogOpenGLState()
|
||||
Write a bunch of OpenGL state information to the log.
|
||||
*/
|
||||
void LogOpenGLState(void);
|
||||
|
325
src/Core/OOOpenGL.m
Normal file
325
src/Core/OOOpenGL.m
Normal file
@ -0,0 +1,325 @@
|
||||
/*
|
||||
|
||||
OOOpenGL.m
|
||||
|
||||
Oolite
|
||||
Copyright (C) 2004-2007 Giles C Williams and contributors
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
MA 02110-1301, USA.
|
||||
|
||||
*/
|
||||
|
||||
#import "OOOpenGL.h"
|
||||
#import "OOLogging.h"
|
||||
|
||||
|
||||
static NSString * const kOOLogOpenGLStateDump = @"rendering.opengl.stateDump";
|
||||
|
||||
|
||||
BOOL CheckOpenGLErrors(NSString *format, ...)
|
||||
{
|
||||
GLenum errCode;
|
||||
const GLubyte *errString = NULL;
|
||||
BOOL errorOccurred = NO;
|
||||
va_list args;
|
||||
|
||||
// Short-circut here, because glGetError() is quite expensive.
|
||||
if (OOLogWillDisplayMessagesInClass(kOOLogOpenGLError))
|
||||
{
|
||||
errCode = glGetError();
|
||||
|
||||
if (errCode != GL_NO_ERROR)
|
||||
{
|
||||
errorOccurred = YES;
|
||||
errString = gluErrorString(errCode);
|
||||
if (format == nil) format = @"<unknown>";
|
||||
|
||||
va_start(args, format);
|
||||
format = [[NSString alloc] initWithFormat:format arguments:args];
|
||||
va_end(args);
|
||||
OOLog(kOOLogOpenGLError, @"OpenGL error: \"%s\" (%u), context: %@", errString, errCode, format);
|
||||
}
|
||||
}
|
||||
return errorOccurred;
|
||||
}
|
||||
|
||||
|
||||
static GLfloat stored_mat_ambient[4];
|
||||
static GLfloat stored_mat_diffuse[4];
|
||||
static GLfloat stored_mat_emission[4];
|
||||
static GLfloat stored_mat_specular[4];
|
||||
static GLfloat stored_mat_shininess[1];
|
||||
|
||||
|
||||
void LogOpenGLState()
|
||||
{
|
||||
if (!OOLogWillDisplayMessagesInClass(kOOLogOpenGLStateDump)) return;
|
||||
|
||||
// we need to report on the material properties
|
||||
GLfloat mat_ambient[4];
|
||||
GLfloat mat_diffuse[4];
|
||||
GLfloat mat_emission[4];
|
||||
GLfloat mat_specular[4];
|
||||
GLfloat mat_shininess[1];
|
||||
//
|
||||
GLfloat current_color[4];
|
||||
//
|
||||
GLint gl_shade_model[1];
|
||||
//
|
||||
GLint gl_texture_env_mode[1];
|
||||
NSString* tex_env_mode_string = nil;
|
||||
//
|
||||
GLint gl_cull_face_mode[1];
|
||||
NSString* cull_face_mode_string = nil;
|
||||
//
|
||||
GLint gl_front_face[1];
|
||||
NSString* front_face_string = nil;
|
||||
//
|
||||
GLint gl_blend_src[1];
|
||||
NSString* blend_src_string = nil;
|
||||
GLint gl_blend_dst[1];
|
||||
NSString* blend_dst_string = nil;
|
||||
//
|
||||
GLenum errCode;
|
||||
const GLubyte *errString;
|
||||
|
||||
glGetMaterialfv( GL_FRONT, GL_AMBIENT, mat_ambient);
|
||||
glGetMaterialfv( GL_FRONT, GL_DIFFUSE, mat_diffuse);
|
||||
glGetMaterialfv( GL_FRONT, GL_EMISSION, mat_emission);
|
||||
glGetMaterialfv( GL_FRONT, GL_SPECULAR, mat_specular);
|
||||
glGetMaterialfv( GL_FRONT, GL_SHININESS, mat_shininess);
|
||||
//
|
||||
glGetFloatv( GL_CURRENT_COLOR, current_color);
|
||||
//
|
||||
glGetIntegerv( GL_SHADE_MODEL, gl_shade_model);
|
||||
//
|
||||
glGetIntegerv( GL_BLEND_SRC, gl_blend_src);
|
||||
switch (gl_blend_src[0])
|
||||
{
|
||||
case GL_ZERO:
|
||||
blend_src_string = @"GL_ZERO";
|
||||
break;
|
||||
case GL_ONE:
|
||||
blend_src_string = @"GL_ONE";
|
||||
break;
|
||||
case GL_DST_COLOR:
|
||||
blend_src_string = @"GL_DST_COLOR";
|
||||
break;
|
||||
case GL_SRC_COLOR:
|
||||
blend_src_string = @"GL_SRC_COLOR";
|
||||
break;
|
||||
case GL_ONE_MINUS_DST_COLOR:
|
||||
blend_src_string = @"GL_ONE_MINUS_DST_COLOR";
|
||||
break;
|
||||
case GL_ONE_MINUS_SRC_COLOR:
|
||||
blend_src_string = @"GL_ONE_MINUS_SRC_COLOR";
|
||||
break;
|
||||
case GL_SRC_ALPHA:
|
||||
blend_src_string = @"GL_SRC_ALPHA";
|
||||
break;
|
||||
case GL_DST_ALPHA:
|
||||
blend_src_string = @"GL_DST_ALPHA";
|
||||
break;
|
||||
case GL_ONE_MINUS_SRC_ALPHA:
|
||||
blend_src_string = @"GL_ONE_MINUS_SRC_ALPHA";
|
||||
break;
|
||||
case GL_ONE_MINUS_DST_ALPHA:
|
||||
blend_src_string = @"GL_ONE_MINUS_DST_ALPHA";
|
||||
break;
|
||||
case GL_SRC_ALPHA_SATURATE:
|
||||
blend_src_string = @"GL_SRC_ALPHA_SATURATE";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//
|
||||
glGetIntegerv( GL_BLEND_DST, gl_blend_dst);
|
||||
switch (gl_blend_dst[0])
|
||||
{
|
||||
case GL_ZERO:
|
||||
blend_dst_string = @"GL_ZERO";
|
||||
break;
|
||||
case GL_ONE:
|
||||
blend_dst_string = @"GL_ONE";
|
||||
break;
|
||||
case GL_DST_COLOR:
|
||||
blend_dst_string = @"GL_DST_COLOR";
|
||||
break;
|
||||
case GL_SRC_COLOR:
|
||||
blend_dst_string = @"GL_SRC_COLOR";
|
||||
break;
|
||||
case GL_ONE_MINUS_DST_COLOR:
|
||||
blend_dst_string = @"GL_ONE_MINUS_DST_COLOR";
|
||||
break;
|
||||
case GL_ONE_MINUS_SRC_COLOR:
|
||||
blend_dst_string = @"GL_ONE_MINUS_SRC_COLOR";
|
||||
break;
|
||||
case GL_SRC_ALPHA:
|
||||
blend_dst_string = @"GL_SRC_ALPHA";
|
||||
break;
|
||||
case GL_DST_ALPHA:
|
||||
blend_dst_string = @"GL_DST_ALPHA";
|
||||
break;
|
||||
case GL_ONE_MINUS_SRC_ALPHA:
|
||||
blend_dst_string = @"GL_ONE_MINUS_SRC_ALPHA";
|
||||
break;
|
||||
case GL_ONE_MINUS_DST_ALPHA:
|
||||
blend_dst_string = @"GL_ONE_MINUS_DST_ALPHA";
|
||||
break;
|
||||
case GL_SRC_ALPHA_SATURATE:
|
||||
blend_dst_string = @"GL_SRC_ALPHA_SATURATE";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//
|
||||
glGetIntegerv( GL_CULL_FACE_MODE, gl_cull_face_mode);
|
||||
switch (gl_cull_face_mode[0])
|
||||
{
|
||||
case GL_BACK:
|
||||
cull_face_mode_string = @"GL_BACK";
|
||||
break;
|
||||
case GL_FRONT:
|
||||
cull_face_mode_string = @"GL_FRONT";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//
|
||||
glGetIntegerv( GL_FRONT_FACE, gl_front_face);
|
||||
switch (gl_front_face[0])
|
||||
{
|
||||
case GL_CCW:
|
||||
front_face_string = @"GL_CCW";
|
||||
break;
|
||||
case GL_CW:
|
||||
front_face_string = @"GL_CW";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//
|
||||
glGetTexEnviv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, gl_texture_env_mode);
|
||||
switch (gl_texture_env_mode[0])
|
||||
{
|
||||
case GL_DECAL:
|
||||
tex_env_mode_string = @"GL_DECAL";
|
||||
break;
|
||||
case GL_REPLACE:
|
||||
tex_env_mode_string = @"GL_REPLACE";
|
||||
break;
|
||||
case GL_MODULATE:
|
||||
tex_env_mode_string = @"GL_MODULATE";
|
||||
break;
|
||||
case GL_BLEND:
|
||||
tex_env_mode_string = @"GL_BLEND";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//
|
||||
if ((errCode =glGetError()) != GL_NO_ERROR)
|
||||
{
|
||||
errString = gluErrorString(errCode);
|
||||
OOLog(kOOLogOpenGLError, @"OpenGL error: '%s' (%u) in: %@", errString, errCode);
|
||||
}
|
||||
|
||||
/*-- MATERIALS --*/
|
||||
if ((stored_mat_ambient[0] != mat_ambient[0])||(stored_mat_ambient[1] != mat_ambient[1])||(stored_mat_ambient[2] != mat_ambient[2])||(stored_mat_ambient[3] != mat_ambient[2]))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_AMBIENT ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
mat_ambient[0], mat_ambient[1], mat_ambient[2], mat_ambient[3]);
|
||||
if ((stored_mat_diffuse[0] != mat_diffuse[0])||(stored_mat_diffuse[1] != mat_diffuse[1])||(stored_mat_diffuse[2] != mat_diffuse[2])||(stored_mat_diffuse[3] != mat_diffuse[2]))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_DIFFUSE ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
mat_diffuse[0], mat_diffuse[1], mat_diffuse[2], mat_diffuse[3]);
|
||||
if ((stored_mat_emission[0] != mat_emission[0])||(stored_mat_emission[1] != mat_emission[1])||(stored_mat_emission[2] != mat_emission[2])||(stored_mat_emission[3] != mat_emission[2]))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_EMISSION ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
mat_emission[0], mat_emission[1], mat_emission[2], mat_emission[3]);
|
||||
if ((stored_mat_specular[0] != mat_specular[0])||(stored_mat_specular[1] != mat_specular[1])||(stored_mat_specular[2] != mat_specular[2])||(stored_mat_specular[3] != mat_specular[2]))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_SPECULAR ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
mat_specular[0], mat_specular[1], mat_specular[2], mat_specular[3]);
|
||||
if (stored_mat_shininess[0] != mat_shininess[0])
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_SHININESS ( %.2ff)", mat_shininess[0]);
|
||||
stored_mat_ambient[0] = mat_ambient[0]; stored_mat_ambient[1] = mat_ambient[1]; stored_mat_ambient[2] = mat_ambient[2]; stored_mat_ambient[3] = mat_ambient[3];
|
||||
stored_mat_diffuse[0] = mat_diffuse[0]; stored_mat_diffuse[1] = mat_diffuse[1]; stored_mat_diffuse[2] = mat_diffuse[2]; stored_mat_diffuse[3] = mat_diffuse[3];
|
||||
stored_mat_emission[0] = mat_emission[0]; stored_mat_emission[1] = mat_emission[1]; stored_mat_emission[2] = mat_emission[2]; stored_mat_emission[3] = mat_emission[3];
|
||||
stored_mat_specular[0] = mat_specular[0]; stored_mat_specular[1] = mat_specular[1]; stored_mat_specular[2] = mat_specular[2]; stored_mat_specular[3] = mat_specular[3];
|
||||
stored_mat_shininess[0] = mat_shininess[0];
|
||||
/*-- MATERIALS --*/
|
||||
|
||||
//
|
||||
/*-- LIGHTS --*/
|
||||
if (glIsEnabled(GL_LIGHTING))
|
||||
{
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHTING :ENABLED:");
|
||||
if (glIsEnabled(GL_LIGHT0))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT0 :ENABLED:");
|
||||
if (glIsEnabled(GL_LIGHT1))
|
||||
{
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT1 :ENABLED:");
|
||||
GLfloat light_ambient[4];
|
||||
GLfloat light_diffuse[4];
|
||||
GLfloat light_specular[4];
|
||||
glGetLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient);
|
||||
glGetLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse);
|
||||
glGetLightfv(GL_LIGHT1, GL_SPECULAR, light_specular);
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT1 GL_AMBIENT ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
light_ambient[0], light_ambient[1], light_ambient[2], light_ambient[3]);
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT1 GL_DIFFUSE ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
light_diffuse[0], light_diffuse[1], light_diffuse[2], light_diffuse[3]);
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT1 GL_SPECULAR ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
light_specular[0], light_specular[1], light_specular[2], light_specular[3]);
|
||||
}
|
||||
if (glIsEnabled(GL_LIGHT2))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT2 :ENABLED:");
|
||||
if (glIsEnabled(GL_LIGHT3))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT3 :ENABLED:");
|
||||
if (glIsEnabled(GL_LIGHT4))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT4 :ENABLED:");
|
||||
if (glIsEnabled(GL_LIGHT5))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT5 :ENABLED:");
|
||||
if (glIsEnabled(GL_LIGHT6))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT6 :ENABLED:");
|
||||
if (glIsEnabled(GL_LIGHT7))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_LIGHT7 :ENABLED:");
|
||||
}
|
||||
/*-- LIGHTS --*/
|
||||
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_CURRENT_COLOR ( %.2ff, %.2ff, %.2ff, %.2ff)",
|
||||
current_color[0], current_color[1], current_color[2], current_color[3]);
|
||||
//
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_TEXTURE_ENV_MODE :%@:", tex_env_mode_string);
|
||||
//
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_SHADEMODEL :%@:", (gl_shade_model[0] == GL_SMOOTH)? @"GL_SMOOTH": @"GL_FLAT");
|
||||
//
|
||||
if (glIsEnabled(GL_FOG))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_FOG :ENABLED:");
|
||||
//
|
||||
if (glIsEnabled(GL_COLOR_MATERIAL))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_COLOR_MATERIAL :ENABLED:");
|
||||
//
|
||||
if (glIsEnabled(GL_BLEND))
|
||||
{
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_BLEND :ENABLED:");
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_BLEND_FUNC (:%@:, :%@:)", blend_src_string, blend_dst_string);
|
||||
}
|
||||
//
|
||||
if (glIsEnabled(GL_CULL_FACE))
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_CULL_FACE :ENABLED:");
|
||||
//
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_CULL_FACE_MODE :%@:", cull_face_mode_string);
|
||||
//
|
||||
OOLog(kOOLogOpenGLStateDump, @"OPENGL_DEBUG GL_FRONT_FACE :%@:", front_face_string);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user