29 std::cout << error << std::endl;
38 std::stringstream stringStream;
39 std::string sourceString;
40 std::string typeString;
41 std::string severityString;
44 case GL_DEBUG_SOURCE_API: {
48 case GL_DEBUG_SOURCE_APPLICATION: {
49 sourceString =
"Application";
52 case GL_DEBUG_SOURCE_WINDOW_SYSTEM: {
53 sourceString =
"Window System";
56 case GL_DEBUG_SOURCE_SHADER_COMPILER: {
57 sourceString =
"Shader Compiler";
60 case GL_DEBUG_SOURCE_THIRD_PARTY: {
61 sourceString =
"Third Party";
64 case GL_DEBUG_SOURCE_OTHER: {
65 sourceString =
"Other";
69 sourceString =
"Unknown";
75 case GL_DEBUG_TYPE_ERROR: {
79 case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: {
80 typeString =
"Deprecated Behavior";
83 case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: {
84 typeString =
"Undefined Behavior";
87 case GL_DEBUG_TYPE_PORTABILITY_ARB: {
88 typeString =
"Portability";
91 case GL_DEBUG_TYPE_PERFORMANCE: {
92 typeString =
"Performance";
95 case GL_DEBUG_TYPE_OTHER: {
100 typeString =
"Unknown";
106 case GL_DEBUG_SEVERITY_HIGH: {
107 severityString =
"High";
110 case GL_DEBUG_SEVERITY_MEDIUM: {
111 severityString =
"Medium";
114 case GL_DEBUG_SEVERITY_LOW: {
115 severityString =
"Low";
119 severityString =
"Unknown";
124 stringStream <<
"OpenGL Error: " << msg;
125 stringStream <<
" [Source = " << sourceString;
126 stringStream <<
", Type = " << typeString;
127 stringStream <<
", Severity = " << severityString;
128 stringStream <<
", ID = " <<
id <<
"]";
130 return stringStream.str();
137 PFNGLDEBUGMESSAGECALLBACKPROC _glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC) wglGetProcAddress(
"glDebugMessageCallback");
138 PFNGLDEBUGMESSAGECALLBACKARBPROC _glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC) wglGetProcAddress(
"glDebugMessageCallbackARB");
141 if (_glDebugMessageCallback != NULL) {
144 else if (_glDebugMessageCallbackARB != NULL) {
151 if ((_glDebugMessageCallback != NULL) || (_glDebugMessageCallbackARB != NULL)) {
152 glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);