diff options
Diffstat (limited to 'indra/llrender/llgldbg.cpp')
-rw-r--r-- | indra/llrender/llgldbg.cpp | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/indra/llrender/llgldbg.cpp b/indra/llrender/llgldbg.cpp new file mode 100644 index 0000000000..2c61ebb851 --- /dev/null +++ b/indra/llrender/llgldbg.cpp @@ -0,0 +1,204 @@ +/** + * @file llgldbg.cpp + * @brief Definitions for OpenGL debugging support + * + * Copyright (c) 2001-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +// This file sets some global GL parameters, and implements some +// useful functions for GL operations. + +#include "linden_common.h" + +#include "llglheaders.h" + +#include "llgl.h" + + +//------------------------------------------------------------------------ +// cmstr() +//------------------------------------------------------------------------ +char *cmstr(int i) +{ + switch( i ) + { + case GL_EMISSION: return "GL_EMISSION"; + case GL_AMBIENT: return "GL_AMBIENT"; + case GL_DIFFUSE: return "GL_DIFFUSE"; + case GL_SPECULAR: return "GL_SPECULAR"; + case GL_AMBIENT_AND_DIFFUSE: return "GL_AMBIENT_AND_DIFFUSE"; + } + return "UNKNOWN"; +} + +//------------------------------------------------------------------------ +// facestr() +//------------------------------------------------------------------------ +char *facestr(int i) +{ + switch( i ) + { + case GL_FRONT: return "GL_FRONT"; + case GL_BACK: return "GL_BACK"; + case GL_FRONT_AND_BACK: return "GL_FRONT_AND_BACK"; + } + return "UNKNOWN"; +} + +//------------------------------------------------------------------------ +// boolstr() +//------------------------------------------------------------------------ +const char *boolstr(int b) +{ + return b ? "GL_TRUE" : "GL_FALSE"; +} + +//------------------------------------------------------------------------ +// fv4() +//------------------------------------------------------------------------ +char *fv4(F32 *f) +{ + static char str[128]; + sprintf(str, "%8.3f %8.3f %8.3f %8.3f", f[0], f[1], f[2], f[3]); + return str; +} + +//------------------------------------------------------------------------ +// fv3() +//------------------------------------------------------------------------ +char *fv3(F32 *f) +{ + static char str[128]; + sprintf(str, "%8.3f, %8.3f, %8.3f", f[0], f[1], f[2]); + return str; +} + +//------------------------------------------------------------------------ +// fv1() +//------------------------------------------------------------------------ +char *fv1(F32 *f) +{ + static char str[128]; + sprintf(str, "%8.3f", f[0]); + return str; +} + +//------------------------------------------------------------------------ +// llgl_dump() +//------------------------------------------------------------------------ +void llgl_dump() +{ + int i; + F32 fv[16]; + GLboolean b; + + llinfos << "==========================" << llendl; + llinfos << "OpenGL State" << llendl; + llinfos << "==========================" << llendl; + + llinfos << "-----------------------------------" << llendl; + llinfos << "Current Values" << llendl; + llinfos << "-----------------------------------" << llendl; + + glGetFloatv(GL_CURRENT_COLOR, fv); + llinfos << "GL_CURRENT_COLOR : " << fv4(fv) << llendl; + + glGetFloatv(GL_CURRENT_NORMAL, fv); + llinfos << "GL_CURRENT_NORMAL : " << fv3(fv) << llendl; + + llinfos << "-----------------------------------" << llendl; + llinfos << "Lighting" << llendl; + llinfos << "-----------------------------------" << llendl; + + llinfos << "GL_LIGHTING : " << boolstr(glIsEnabled(GL_LIGHTING)) << llendl; + + llinfos << "GL_COLOR_MATERIAL : " << boolstr(glIsEnabled(GL_COLOR_MATERIAL)) << llendl; + + glGetIntegerv(GL_COLOR_MATERIAL_PARAMETER, (GLint*)&i); + llinfos << "GL_COLOR_MATERIAL_PARAMETER: " << cmstr(i) << llendl; + + glGetIntegerv(GL_COLOR_MATERIAL_FACE, (GLint*)&i); + llinfos << "GL_COLOR_MATERIAL_FACE : " << facestr(i) << llendl; + + fv[0] = fv[1] = fv[2] = fv[3] = 12345.6789f; + glGetMaterialfv(GL_FRONT, GL_AMBIENT, fv); + llinfos << "GL_AMBIENT material : " << fv4(fv) << llendl; + + fv[0] = fv[1] = fv[2] = fv[3] = 12345.6789f; + glGetMaterialfv(GL_FRONT, GL_DIFFUSE, fv); + llinfos << "GL_DIFFUSE material : " << fv4(fv) << llendl; + + fv[0] = fv[1] = fv[2] = fv[3] = 12345.6789f; + glGetMaterialfv(GL_FRONT, GL_SPECULAR, fv); + llinfos << "GL_SPECULAR material : " << fv4(fv) << llendl; + + fv[0] = fv[1] = fv[2] = fv[3] = 12345.6789f; + glGetMaterialfv(GL_FRONT, GL_EMISSION, fv); + llinfos << "GL_EMISSION material : " << fv4(fv) << llendl; + + fv[0] = fv[1] = fv[2] = fv[3] = 12345.6789f; + glGetMaterialfv(GL_FRONT, GL_SHININESS, fv); + llinfos << "GL_SHININESS material : " << fv1(fv) << llendl; + + fv[0] = fv[1] = fv[2] = fv[3] = 12345.6789f; + glGetFloatv(GL_LIGHT_MODEL_AMBIENT, fv); + llinfos << "GL_LIGHT_MODEL_AMBIENT : " << fv4(fv) << llendl; + + glGetBooleanv(GL_LIGHT_MODEL_LOCAL_VIEWER, &b); + llinfos << "GL_LIGHT_MODEL_LOCAL_VIEWER: " << boolstr(b) << llendl; + + glGetBooleanv(GL_LIGHT_MODEL_TWO_SIDE, &b); + llinfos << "GL_LIGHT_MODEL_TWO_SIDE : " << boolstr(b) << llendl; + + for (int l=0; l<8; l++) + { + b = glIsEnabled(GL_LIGHT0+l); + llinfos << "GL_LIGHT" << l << " : " << boolstr(b) << llendl; + + if (!b) + continue; + + glGetLightfv(GL_LIGHT0+l, GL_AMBIENT, fv); + llinfos << " GL_AMBIENT light : " << fv4(fv) << llendl; + + glGetLightfv(GL_LIGHT0+l, GL_DIFFUSE, fv); + llinfos << " GL_DIFFUSE light : " << fv4(fv) << llendl; + + glGetLightfv(GL_LIGHT0+l, GL_SPECULAR, fv); + llinfos << " GL_SPECULAR light : " << fv4(fv) << llendl; + + glGetLightfv(GL_LIGHT0+l, GL_POSITION, fv); + llinfos << " GL_POSITION light : " << fv4(fv) << llendl; + + glGetLightfv(GL_LIGHT0+l, GL_CONSTANT_ATTENUATION, fv); + llinfos << " GL_CONSTANT_ATTENUATION : " << fv1(fv) << llendl; + + glGetLightfv(GL_LIGHT0+l, GL_QUADRATIC_ATTENUATION, fv); + llinfos << " GL_QUADRATIC_ATTENUATION : " << fv1(fv) << llendl; + + glGetLightfv(GL_LIGHT0+l, GL_SPOT_DIRECTION, fv); + llinfos << " GL_SPOT_DIRECTION : " << fv4(fv) << llendl; + + glGetLightfv(GL_LIGHT0+l, GL_SPOT_EXPONENT, fv); + llinfos << " GL_SPOT_EXPONENT : " << fv1(fv) << llendl; + + glGetLightfv(GL_LIGHT0+l, GL_SPOT_CUTOFF, fv); + llinfos << " GL_SPOT_CUTOFF : " << fv1(fv) << llendl; + } + + llinfos << "-----------------------------------" << llendl; + llinfos << "Pixel Operations" << llendl; + llinfos << "-----------------------------------" << llendl; + + llinfos << "GL_ALPHA_TEST : " << boolstr(glIsEnabled(GL_ALPHA_TEST)) << llendl; + llinfos << "GL_DEPTH_TEST : " << boolstr(glIsEnabled(GL_DEPTH_TEST)) << llendl; + + glGetBooleanv(GL_DEPTH_WRITEMASK, &b); + llinfos << "GL_DEPTH_WRITEMASK : " << boolstr(b) << llendl; + + llinfos << "GL_BLEND : " << boolstr(glIsEnabled(GL_BLEND)) << llendl; + llinfos << "GL_DITHER : " << boolstr(glIsEnabled(GL_DITHER)) << llendl; +} + +// End |