]> git.mxchange.org Git - simgear.git/blobdiff - simgear/scene/util/SGDebugDrawCallback.hxx
Work around apparent OSG 3.2.0 normal binding bug.
[simgear.git] / simgear / scene / util / SGDebugDrawCallback.hxx
index 914d0d1ab3b59b5fb580011b1f5d726739249eae..4f02baaa08b7ff0d50db8ae2e4c177ef8d813f7a 100644 (file)
@@ -141,6 +141,24 @@ do {                                  \
 #undef PRINT_STATE
 #undef ERROR_CHECK
 
+
+#ifdef PRINT_LIGHT
+#undef PRINT_LIGHT
+#endif
+#define PRINT_LIGHT(pname)                    \
+do {                                             \
+  SGVec4f color;                                 \
+  glGetLightfv(GL_LIGHT0, pname, color.data());\
+  stream << " " #pname " " << color;    \
+} while(0)
+    PRINT_LIGHT(GL_AMBIENT);
+    PRINT_LIGHT(GL_DIFFUSE);
+    PRINT_LIGHT(GL_SPECULAR);
+    PRINT_LIGHT(GL_POSITION);
+    PRINT_LIGHT(GL_SPOT_DIRECTION);
+
+#undef PRINT_LIGHT
+
     if (glIsEnabled(GL_COLOR_MATERIAL)) {
       stream << " GL_COLOR_MATERIAL(";
       GLint value;
@@ -156,6 +174,24 @@ do {                                  \
       if (value == GL_SPECULAR)
         stream << "GL_SPECULAR";
 
+#ifdef PRINT_MATERIAL
+#undef PRINT_MATERIAL
+#endif
+#define PRINT_MATERIAL(pname)                    \
+do {                                             \
+  SGVec4f color;                                 \
+  glGetMaterialfv(GL_FRONT, pname, color.data());\
+  stream << " " #pname " GL_FRONT " << color;    \
+  glGetMaterialfv(GL_BACK, pname, color.data()); \
+  stream << " " #pname " GL_BACK " << color;     \
+} while(0)
+
+      PRINT_MATERIAL(GL_AMBIENT);
+      PRINT_MATERIAL(GL_DIFFUSE);
+      PRINT_MATERIAL(GL_EMISSION);
+      PRINT_MATERIAL(GL_SPECULAR);
+#undef PRINT_MATERIAL
+
       stream << ")";
     }