#include #include "gl_debug.h" #ifdef __DEBUG void GLAPIENTRY debug_func(GLenum source, GLenum type, GLuint, GLenum severity, GLsizei, const GLchar* msg, const void*) { const char* src; switch(source) { case GL_DEBUG_SOURCE_API: src = "[SOURCE_API]"; break; case GL_DEBUG_SOURCE_OTHER: src = "[SOURCE_OTHER]"; break; case GL_DEBUG_SOURCE_THIRD_PARTY: src = "[SOURCE_THIRD_PARTY]"; break; case GL_DEBUG_SOURCE_APPLICATION: src = "[SOURCE_APP]"; break; case GL_DEBUG_SOURCE_SHADER_COMPILER: src = "[SOURCE_SHADER_COMPILER]"; break; case GL_DEBUG_SOURCE_WINDOW_SYSTEM: src = "[SOURCE_WIN_SYS]"; break; default: src = "[SOURCE_UNKNOWN]"; break; } const char* tp; switch(type) { case GL_DEBUG_TYPE_ERROR: tp = "[TYPE_ERROR]"; break; case GL_DEBUG_TYPE_OTHER: tp = "[TYPE_OTHER]"; break; case GL_DEBUG_TYPE_MARKER: tp = "[TYPE_MARKER]"; break; case GL_DEBUG_TYPE_PERFORMANCE: tp = "[TYPE_PERF]"; break; case GL_DEBUG_TYPE_PORTABILITY: tp = "[TYPE_PORT]"; break; case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: tp = "[TYPE_DEPRECATED]"; break; case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: tp = "[TYPE_UB]"; break; default: tp = "[TYPE_UNKNOWN]"; break; } const char* sv; switch(severity) { case GL_DEBUG_SEVERITY_LOW: sv = "[SEV_LOW]"; break; case GL_DEBUG_SEVERITY_MEDIUM: sv = "[SEV_MED]"; break; case GL_DEBUG_SEVERITY_HIGH: sv = "[SEV_HIGH]"; break; case GL_DEBUG_SEVERITY_NOTIFICATION: return; sv = "[SEV_NOTIF]"; break; default: sv = "[SEV_UNKNOWN]"; } std::cerr << "[GL]" << sv << tp << src << ": " << msg << std::endl; } #endif