18 std::unique_ptr<
char[], void (*)(
void*)> result(abi::__cxa_demangle(mangled, 0, 0, &status), std::free);
19 return result.get() ? std::string(result.get()) :
"error occurred";
27 const GLchar* message,
28 const void* userParam) {
29 std::string severityStr =
"Unspecified";
32 case GL_DEBUG_SEVERITY_HIGH:
33 severityStr =
"High (UB)";
36 case GL_DEBUG_SEVERITY_MEDIUM:
37 severityStr =
"Medium (Performance, deprecated)";
40 case GL_DEBUG_SEVERITY_LOW:
41 severityStr =
"Low (performance generally)";
44 case GL_DEBUG_SEVERITY_NOTIFICATION:
45 severityStr =
"Notification";
49 severityStr =
"Unspecified";
56 std::string sourceStr =
"Unspecified";
58 case GL_DEBUG_SOURCE_API:
59 sourceStr =
"OpenGL API";
61 case GL_DEBUG_SOURCE_WINDOW_SYSTEM:
62 sourceStr =
"Window System";
64 case GL_DEBUG_SOURCE_SHADER_COMPILER:
65 sourceStr =
"Shader Compiler";
67 case GL_DEBUG_SOURCE_THIRD_PARTY:
68 sourceStr =
"Assoc. Application";
70 case GL_DEBUG_SOURCE_APPLICATION:
71 sourceStr =
"Application User";
73 case GL_DEBUG_SOURCE_OTHER:
77 sourceStr =
"Unspecified";
81 std::string typeStr =
"Unspecified";
83 case GL_DEBUG_TYPE_ERROR:
86 case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:
87 typeStr =
"Deprecated Behaviour";
89 case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:
90 typeStr =
"Undefined Behaviour";
92 case GL_DEBUG_TYPE_PORTABILITY:
93 typeStr =
"Portability Concern";
95 case GL_DEBUG_TYPE_PERFORMANCE:
96 typeStr =
"Performance Issue";
98 case GL_DEBUG_TYPE_MARKER:
99 typeStr =
"Command Stream Annotation";
101 case GL_DEBUG_TYPE_PUSH_GROUP:
102 typeStr =
"Group Pushing";
104 case GL_DEBUG_TYPE_POP_GROUP:
105 typeStr =
"Documented as 'foo'";
107 case GL_DEBUG_TYPE_OTHER:
111 typeStr =
"Unspecified";
115 std::string errorString =
"GL Callback: " + std::string(type == GL_DEBUG_TYPE_ERROR ?
"** GL ERROR **" :
"") +
"\n";
116 errorString +=
"Type: " + typeStr +
"\n";
117 errorString +=
"Severity: " + severityStr +
"\n";
118 errorString +=
"Message: " + std::string(message) +
"\n";
137 return "EC SDL_FAILURE - SDL Failure to initialize. SDL_GetError() yields the following: \n\n" +
138 std::string(SDL_GetError());
140 return "EC DOUBLE_INIT - There was an attempted double-initialization in the program. Not too serious, but fix it anyways, nerd.";
142 return "EC GLEW_FAILURE - GLEW could not be initialized!";
144 return "EC GL_FAILURE_VERSION - GL Version is not good enough.";
146 return "EC TEXTURE_FAILURE - Texture could not be loaded from file or created.";
148 return "EC VERTEX_SHADER_FAILURE";
150 return "EC FRAGMENT_SHADER_FAILURE";
152 return "EC UNIFORM_NOT_FOUND";
154 return "EC SHADER_COMPILE_FAILURE";
156 return "EC SHADER_LINK_FAILURE";
158 return "EC GLSL_PROGRAM_FAILURE";
160 return "EC FONT_FAILURE";
162 return "EC FBO_FAILURE";
164 return "EC LOGGER_FAILURE";
166 return "EC XML_FAILURE";
168 return "EC UNINITIALIZED_FUNCTION";
170 return "EC LUA_FAILURE";
172 return "EC NULL_PTR_ACCESS";
174 return "EC DNE - Unknown error. (enum " + std::to_string((
unsigned int)err) +
")";
180 std::cout << std::setfill(
'#') << std::setw(50) <<
"\n";
181 std::cout <<
"FATAL ERROR: "
183 std::cout << std::setfill(
'#') << std::setw(50) <<
"\n\n";
194 std::cout << std::setfill(
'-') << std::setw(50) <<
"\n";
195 std::cout <<
"Error: " << message << std::endl;
197 std::cout << std::setfill(
'-') << std::setw(50) <<
"\n";
202 std::cout << std::endl <<
"Thrown Errors: " << std::endl;
203 std::cout << std::setfill(
'-') << std::setw(50) <<
"\n";
206 std::cout << std::setfill(
'-') << std::setw(50) <<
"\n";
214 GLboolean inited = GL_FALSE;
215 glGetBooleanv(GL_DEBUG_OUTPUT, &inited);
218 glEnable(GL_DEBUG_OUTPUT);