11 source_to_string(GLenum source)
15 case GL_DEBUG_SOURCE_API_ARB:
return "API";
break;
16 case GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB:
return "Window System";
break;
17 case GL_DEBUG_SOURCE_SHADER_COMPILER_ARB:
return "Shader Compiler";
break;
18 case GL_DEBUG_SOURCE_THIRD_PARTY_ARB:
return "Third Party";
break;
19 case GL_DEBUG_SOURCE_APPLICATION_ARB:
return "Application";
break;
20 case GL_DEBUG_SOURCE_OTHER_ARB:
return "Other";
break;
21 default:
return "Unknown";
26 type_to_string(GLenum type)
30 case GL_DEBUG_TYPE_ERROR_ARB:
return "Error";
31 case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB:
return "Deprecated Behaviour";
32 case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB:
return "Undefined Behaviour";
33 case GL_DEBUG_TYPE_PORTABILITY_ARB:
return "Portability";
34 case GL_DEBUG_TYPE_PERFORMANCE_ARB:
return "Performance";
35 case GL_DEBUG_TYPE_OTHER_ARB:
return "Other";
36 default:
return "Unknown";
41 severity_to_string(GLenum severity)
45 case GL_DEBUG_SEVERITY_HIGH_ARB:
return "high";
break;
46 case GL_DEBUG_SEVERITY_MEDIUM_ARB:
return "medium";
break;
47 case GL_DEBUG_SEVERITY_LOW_ARB:
return "low";
break;
48 default:
return "unknown";
62 case GL_INVALID_ENUM:
return "INVALID_ENUM";
63 case GL_INVALID_VALUE:
return "INVALID_VALUE";
64 case GL_INVALID_OPERATION:
return "INVALID_OPERATION";
65 #ifdef GL_STACK_OVERFLOW
66 case GL_STACK_OVERFLOW:
return "STACK_OVERFLOW";
68 #ifdef GL_STACK_UNDERFLOW
69 case GL_STACK_UNDERFLOW:
return "STACK_UNDERFLOW";
71 case GL_OUT_OF_MEMORY:
return "OUT_OF_MEMORY";
72 case GL_INVALID_FRAMEBUFFER_OPERATION:
return "INVALID_FRAMEBUFFER_OPERATION";
73 default:
return "UNKNOWN";
81 GLenum error_code = 0;
82 while((error_code = glGetError()) != GL_NO_ERROR)
98 const GLchar* message,
103 if(type == GL_DEBUG_TYPE_OTHER_ARB)
109 static int error_count = 0;
117 LOG_ERROR(
"Debug message ({0}): {1}",
id, message);
120 "Source {0} type: {1} Severity: {2}",
121 source_to_string(source),
122 type_to_string(type),
123 severity_to_string(severity)
132 const bool has_debug = GLAD_GL_ARB_debug_output == 1;
135 LOG_INFO(
"Enabling OpenGL debug output");
136 glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB);
137 glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB);
139 glDebugMessageControlARB
constexpr ParseResult error
no error occurred
void setup_opengl_debug()
std::string from_opengl_error_to_string(GLenum error_code)
void print_all_opengl_errors(const char *file, int line)
void APIENTRY on_opengl_error(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei, const GLchar *message, const GLvoid *)