fix cr/lfs and remove trailing whitespaces...
[supertux.git] / src / video / glutil.hpp
index f7d4310..6c2122f 100644 (file)
@@ -1,7 +1,7 @@
 //  $Id$
 //
-//  SuperTux -  A Jump'n Run
-//  Copyright (C) 2004 Matthias Braun <matze@braunis.de
+//  SuperTux
+//  Copyright (C) 2006 Matthias Braun <matze@braunis.de>
 //
 //  This program is free software; you can redistribute it and/or
 //  modify it under the terms of the GNU General Public License
 #include <sstream>
 #include <stdexcept>
 #include <GL/gl.h>
-#include <GL/glu.h>
 
-static inline void assert_gl(const char* message)
+static inline void check_gl_error(const char* message)
 {
 #ifdef DEBUG
   GLenum error = glGetError();
   if(error != GL_NO_ERROR) {
     std::ostringstream msg;
-    msg << "OpenGLError while '" << message << "': "
-        << gluErrorString(error);
+    msg << "OpenGLError while '" << message << "': ";
+    switch(error) {
+      case GL_INVALID_ENUM:
+        msg << "INVALID_ENUM: An unacceptable value is specified for an "
+               "enumerated argument.";
+        break;
+      case GL_INVALID_VALUE:
+        msg << "INVALID_VALUE: A numeric argument is out of range.";
+        break;
+      case GL_INVALID_OPERATION:
+        msg << "INVALID_OPERATION: The specified operation is not allowed "
+               "in the current state.";
+        break;
+      case GL_STACK_OVERFLOW:
+        msg << "STACK_OVERFLOW: This command would cause a stack overflow.";
+        break;
+      case GL_STACK_UNDERFLOW:
+        msg << "STACK_UNDERFLOW: This command would cause a stack underflow.";
+        break;
+      case GL_OUT_OF_MEMORY:
+        msg << "OUT_OF_MEMORY: There is not enough memory left to execute the "
+               "command.";
+        break;
+#ifdef GL_TABLE_TOO_LARGE
+      case GL_TABLE_TOO_LARGE:
+        msg << "TABLE_TOO_LARGE: table is too large";
+        break;
+#endif
+      default:
+        msg << "Unknown error (code " << error << ")";
+    }
+
     throw std::runtime_error(msg.str());
   }
 #endif
 }
 
+static inline void assert_gl(const char* message)
+{
+#ifdef DEBUG
+  check_gl_error(message);
+#else
+  (void) message;
 #endif
+}
 
+#endif