From 79461eb14ce9631ce5c5ae3ecd7947f9bbae14bf Mon Sep 17 00:00:00 2001 From: Sean Pringle Date: Fri, 24 Jul 2020 15:27:07 +1000 Subject: [PATCH] rlglCheckErrors --- src/core.c | 2 ++ src/rlgl.h | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/src/core.c b/src/core.c index 54e422c49..16bba2d6b 100644 --- a/src/core.c +++ b/src/core.c @@ -1383,6 +1383,8 @@ void EndDrawing(void) } #endif + rlglCheckErrors(); + SwapBuffers(); // Copy back buffer to front buffer PollInputEvents(); // Poll user events diff --git a/src/rlgl.h b/src/rlgl.h index 9d6c85c75..c01719e2e 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -519,6 +519,7 @@ RLAPI unsigned int rlLoadAttribBuffer(unsigned int vaoId, int shaderLoc, void *b RLAPI void rlglInit(int width, int height); // Initialize rlgl (buffers, shaders, textures, states) RLAPI void rlglClose(void); // De-inititialize rlgl (buffers, shaders, textures) RLAPI void rlglDraw(void); // Update and draw default internal buffers +RLAPI void rlglCheckErrors(void); // Check and log OpenGL error codes RLAPI int rlGetVersion(void); // Returns current OpenGL version RLAPI bool rlCheckBufferLimit(int vCount); // Check internal buffer overflow for a given number of vertex @@ -1797,6 +1798,45 @@ void rlglDraw(void) #endif } +// Check and log OpenGL error codes +void rlglCheckErrors() { +#if defined(GRAPHICS_API_OPENGL_21) || defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + int check = 1; + while (check) { + const GLenum err = glGetError(); + switch (err) { + case GL_NO_ERROR: + check = 0; + break; + case 0x0500: // GL_INVALID_ENUM: + TRACELOG(LOG_ERROR, "GL_INVALID_ENUM"); + break; + case 0x0501: //GL_INVALID_VALUE: + TRACELOG(LOG_ERROR, "GL_INVALID_VALUE"); + break; + case 0x0502: //GL_INVALID_OPERATION: + TRACELOG(LOG_ERROR, "GL_INVALID_OPERATION"); + break; + case 0x0503: // GL_STACK_OVERFLOW: + TRACELOG(LOG_ERROR, "GL_STACK_OVERFLOW"); + break; + case 0x0504: // GL_STACK_UNDERFLOW: + TRACELOG(LOG_ERROR, "GL_STACK_UNDERFLOW"); + break; + case 0x0505: // GL_OUT_OF_MEMORY: + TRACELOG(LOG_ERROR, "GL_OUT_OF_MEMORY"); + break; + case 0x0506: // GL_INVALID_FRAMEBUFFER_OPERATION: + TRACELOG(LOG_ERROR, "GL_INVALID_FRAMEBUFFER_OPERATION"); + break; + default: + TRACELOG(LOG_ERROR, "unknown GL error %x", err); + break; + } + } +#endif +} + // Returns current OpenGL version int rlGetVersion(void) {