changeset 55:bf73a2a70ec7

Add OpenGL error checking.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 06 Dec 2019 23:29:26 +0200
parents 73fa5fb437a0
children 8b335eb444ae
files gldragon.cpp
diffstat 1 files changed, 24 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/gldragon.cpp	Fri Dec 06 22:41:33 2019 +0200
+++ b/gldragon.cpp	Fri Dec 06 23:29:26 2019 +0200
@@ -39,6 +39,19 @@
 
 /* Helpers
  */
+bool dmGLCheckErrors(void)
+{
+    bool ok = true;
+    GLenum err;
+    while ((err = glGetError()) != GL_NO_ERROR)
+    {
+        dmError("OpenGL error code: 0x%x (%d)\n", err);
+        ok = false;
+    }
+    return ok;
+}
+
+
 #ifdef GL_GLEXT_PROTOTYPES
 #define DM_GLEXT_INIT(extproctype, extprocname) /* stub */
 #else
@@ -201,6 +214,9 @@
     dmMsg("GL_VERSION  : %s\n", glGetString(GL_VERSION));
     dmMsg("VSync mode  : %s\n", msg.c_str());
 
+    if (!dmGLCheckErrors())
+        return false;
+
     // Setup the window and view port
     glViewport(0, 0, width, height);
 
@@ -224,7 +240,6 @@
     // Enable normal rescaling
     glEnable(GL_RESCALE_NORMAL);
 
-
     // Setup depth buffer
     glClearDepth(1.0f);
 
@@ -238,7 +253,7 @@
     // Set correct perspective correction
     glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
 
-    return true;
+    return dmGLCheckErrors();
 }
 
 
@@ -425,11 +440,12 @@
             if (opt[0] == '-')
                 opt++;
 
-            if (opt[0] == 'g')
-                optUseShaders = true;
-            else
             switch (opt[0])
             {
+                case 'g':
+                    optUseShaders = true;
+                    break;
+
                 case 'w':
                 case 'h':
                 case 'm':
@@ -601,6 +617,9 @@
         // Rotate for 2 degrees
         glRotatef(2.0f, 0, 1, 0);
 
+        // Check for errors
+        dmGLCheckErrors();
+
         // Return true if a full rotation was done
         totalFrames++;
         if (cycleFrames++ == SET_FRAMES)