5 static void GLAPIENTRY gldebug_logger(GLenum src, GLenum type, GLuint id, GLenum severity,
6 GLsizei len, const char *msg, const void *cls);
8 static const char *gldebug_srcstr(unsigned int src);
9 static const char *gldebug_typestr(unsigned int type);
10 static const char *gldebug_sevstr(unsigned int sev);
18 glcaps.debug = GLEW_ARB_debug_output;
22 info_log("Installing OpenGL debug callback\n");
23 glDebugMessageCallback(gldebug_logger, 0);
31 static void GLAPIENTRY gldebug_logger(GLenum src, GLenum type, GLuint id, GLenum severity,
32 GLsizei len, const char *msg, const void *cls)
34 static const char *fmt = "[GLDEBUG] (%s) %s: %s\n";
36 case GL_DEBUG_TYPE_ERROR:
37 error_log(fmt, gldebug_srcstr(src), gldebug_typestr(type), msg);
40 case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:
41 case GL_DEBUG_TYPE_PORTABILITY:
42 case GL_DEBUG_TYPE_PERFORMANCE:
43 warning_log(fmt, gldebug_srcstr(src), gldebug_typestr(type), msg);
47 debug_log(fmt, gldebug_srcstr(src), gldebug_typestr(type), msg);
51 static const char *gldebug_srcstr(unsigned int src)
54 case GL_DEBUG_SOURCE_API:
56 case GL_DEBUG_SOURCE_WINDOW_SYSTEM:
58 case GL_DEBUG_SOURCE_SHADER_COMPILER:
60 case GL_DEBUG_SOURCE_THIRD_PARTY:
62 case GL_DEBUG_SOURCE_APPLICATION:
64 case GL_DEBUG_SOURCE_OTHER:
72 static const char *gldebug_typestr(unsigned int type)
75 case GL_DEBUG_TYPE_ERROR:
77 case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:
79 case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:
80 return "undefined behavior";
81 case GL_DEBUG_TYPE_PORTABILITY:
82 return "portability warning";
83 case GL_DEBUG_TYPE_PERFORMANCE:
84 return "performance warning";
85 case GL_DEBUG_TYPE_OTHER:
93 static const char *gldebug_sevstr(unsigned int sev)
96 case GL_DEBUG_SEVERITY_HIGH:
98 case GL_DEBUG_SEVERITY_MEDIUM:
100 case GL_DEBUG_SEVERITY_LOW: