diff --git a/checkGLError/checkGLError.cc b/checkGLError/checkGLError.cc new file mode 100644 index 0000000..fb59f90 --- /dev/null +++ b/checkGLError/checkGLError.cc @@ -0,0 +1,32 @@ + +#include + +#include "checkGLError.h" + +#define checkGLErrorCase(e) \ + case (e): sprintf(msg, #e); break + +GLenum _checkGLError(const char *fname, int lineno) +{ + char msg[40]; + GLenum e; + + sprintf(msg, "Unknown"); + e = glGetError(); + switch (e) + { + checkGLErrorCase(GL_NO_ERROR); + checkGLErrorCase(GL_INVALID_ENUM); + checkGLErrorCase(GL_INVALID_VALUE); + checkGLErrorCase(GL_INVALID_OPERATION); + checkGLErrorCase(GL_STACK_OVERFLOW); + checkGLErrorCase(GL_STACK_UNDERFLOW); + checkGLErrorCase(GL_OUT_OF_MEMORY); + checkGLErrorCase(GL_TABLE_TOO_LARGE); + } + + if (e != GL_NO_ERROR) + fprintf(stderr, "GL error %s at %s:%d\n", msg, fname, lineno); + + return e; +} diff --git a/checkGLError/checkGLError.h b/checkGLError/checkGLError.h new file mode 100644 index 0000000..cdf7bde --- /dev/null +++ b/checkGLError/checkGLError.h @@ -0,0 +1,12 @@ + +#ifndef CHECKGLERROR_H +#define CHECKGLERROR_H + +#include + +#define checkGLError() _checkGLError(__FILE__, __LINE__) +#define GL_CHECK(x) ({x; checkGLError();}) + +GLenum _checkGLError(const char *fname, int lineno); + +#endif