diff --git a/libobs-opengl/gl-helpers.h b/libobs-opengl/gl-helpers.h index 779d070d5..b48dfd35a 100644 --- a/libobs-opengl/gl-helpers.h +++ b/libobs-opengl/gl-helpers.h @@ -17,6 +17,50 @@ #pragma once +static char *gl_error_to_str(GLenum errorcode) +{ + static void *err_to_str[][2] = { + { + GL_INVALID_ENUM, + "GL_INVALID_ENUM", + }, + { + GL_INVALID_VALUE, + "GL_INVALID_VALUE", + }, + { + GL_INVALID_OPERATION, + "GL_INVALID_OPERATION", + }, + { + GL_INVALID_FRAMEBUFFER_OPERATION, + "GL_INVALID_FRAMEBUFFER_OPERATION", + }, + { + GL_OUT_OF_MEMORY, + "GL_OUT_OF_MEMORY", + }, + { + GL_STACK_UNDERFLOW, + "GL_STACK_UNDERFLOW", + }, + { + GL_STACK_OVERFLOW, + "GL_STACK_OVERFLOW", + }, + { + NULL, + "Unknown", + }, + }; + int i = 0; + while ((GLenum)err_to_str[i][0] != errorcode || + err_to_str[i][0] == NULL) { + i += 2; + } + return err_to_str[i][1]; +} + /* * Okay, so GL error handling is.. unclean to work with. I don't want * to have to keep typing out the same stuff over and over again do I'll just @@ -28,8 +72,9 @@ static inline bool gl_success(const char *funcname) GLenum errorcode = glGetError(); if (errorcode != GL_NO_ERROR) { do { - blog(LOG_ERROR, "%s failed, glGetError returned 0x%X", - funcname, errorcode); + blog(LOG_ERROR, + "%s failed, glGetError returned %s(0x%X)", + funcname, gl_error_to_str(errorcode), errorcode); errorcode = glGetError(); } while (errorcode != GL_NO_ERROR); return false;