Created
June 2, 2020 06:54
-
-
Save tilkinsc/7c058064a5264d9a51d9c85adb1e60fa to your computer and use it in GitHub Desktop.
Default glfw and ogl error callbacks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#pragma once | |
#include <stdio.h> | |
#include <GL/glew.h> | |
#include <GLFW/glfw3.h> | |
static void glfw_default_error_callback( | |
int error, const char* desc | |
){ | |
const char* glfw_str; | |
switch(error) { | |
case GLFW_NOT_INITIALIZED: | |
glfw_str = "NOT_INITIALIZED"; | |
break; | |
case GLFW_NO_CURRENT_CONTEXT: | |
glfw_str = "NO_CURRENT_CONTEXT"; | |
break; | |
case GLFW_INVALID_ENUM: | |
glfw_str = "INVALID_ENUM"; | |
break; | |
case GLFW_INVALID_VALUE: | |
glfw_str = "INVALID_VALUE"; | |
break; | |
case GLFW_OUT_OF_MEMORY: | |
glfw_str = "OUT_OF_MEMORY"; | |
break; | |
case GLFW_API_UNAVAILABLE: | |
glfw_str = "API_UNAVAILABLE"; | |
break; | |
case GLFW_VERSION_UNAVAILABLE: | |
glfw_str = "VERSION_UNAVAILABLE"; | |
break; | |
case GLFW_PLATFORM_ERROR: | |
glfw_str = "PLATFORM_ERROR"; | |
break; | |
case GLFW_FORMAT_UNAVAILABLE: | |
glfw_str = "FORMAT_UNAVAILABLE"; | |
break; | |
default: | |
glfw_str = "UNKNOWN"; | |
break; | |
} | |
fprintf(stderr, "GLFW error with `id %s(0x%x)`.\n", glfw_str, error); | |
fprintf(stderr, "Got length %llu message: %s\n", strlen(desc), desc); | |
} | |
static void gl_default_error_callback( | |
GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, | |
const GLchar* message, const void* userParam | |
){ | |
const char* source_s; | |
switch(source) { | |
case GL_DEBUG_SOURCE_API: | |
source_s = "API"; | |
break; | |
case GL_DEBUG_SOURCE_WINDOW_SYSTEM: | |
source_s = "WINDOW_SYSTEM"; | |
break; | |
case GL_DEBUG_SOURCE_SHADER_COMPILER: | |
source_s = "SHADER_COMPILER"; | |
break; | |
case GL_DEBUG_SOURCE_THIRD_PARTY: | |
source_s = "THIRD_PARTY"; | |
break; | |
case GL_DEBUG_SOURCE_APPLICATION: | |
source_s = "APPLICATION"; | |
break; | |
case GL_DEBUG_SOURCE_OTHER: | |
source_s = "OTHER"; | |
break; | |
default: | |
source_s = "UNKNOWN_SOURCE"; | |
break; | |
} | |
const char* type_s; | |
switch(type) { | |
case GL_DEBUG_TYPE_ERROR: | |
type_s = "ERROR"; | |
break; | |
case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: | |
type_s = "DEPRECATED_BEHAVIOR"; | |
break; | |
case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: | |
type_s = "UNDEFINED_BEHAVIOR"; | |
break; | |
case GL_DEBUG_TYPE_PORTABILITY: | |
type_s = "PORTABILITY"; | |
break; | |
case GL_DEBUG_TYPE_PERFORMANCE: | |
type_s = "PERFORMANCE"; | |
break; | |
case GL_DEBUG_TYPE_MARKER: | |
type_s = "MARKER"; | |
break; | |
case GL_DEBUG_TYPE_PUSH_GROUP: | |
type_s = "PUSH_GROUP"; | |
break; | |
case GL_DEBUG_TYPE_POP_GROUP: | |
type_s = "POP_GROUP"; | |
break; | |
case GL_DEBUG_TYPE_OTHER: | |
type_s = "OTHER"; | |
break; | |
default: | |
type_s = "UNKNOWN_TYPE"; | |
break; | |
} | |
const char* severity_s; | |
switch(type) { | |
case GL_DEBUG_SEVERITY_HIGH: | |
severity_s = "HIGH"; | |
break; | |
case GL_DEBUG_SEVERITY_MEDIUM: | |
severity_s = "MEDIUM"; | |
break; | |
case GL_DEBUG_SEVERITY_LOW: | |
severity_s = "LOW"; | |
break; | |
case GL_DEBUG_SEVERITY_NOTIFICATION: | |
severity_s = "NOTIFICATION"; | |
break; | |
default: | |
severity_s = "UNKNOWN_SEVERITY"; | |
break; | |
} | |
const char* id_s; | |
switch(id) { | |
case GL_NO_ERROR: | |
id_s = "NO_ERROR"; | |
break; | |
case GL_INVALID_ENUM: | |
id_s = "INVALID_ENUM"; | |
break; | |
case GL_INVALID_VALUE: | |
id_s = "INVALID_VALUE"; | |
break; | |
case GL_INVALID_OPERATION: | |
id_s = "INVALID_OPERATION"; | |
break; | |
case GL_INVALID_FRAMEBUFFER_OPERATION: | |
id_s = "INVALID_FRAMEBUFFER_OPERATION"; | |
break; | |
case GL_OUT_OF_MEMORY: | |
id_s = "OUT_OF_MEMORY"; | |
break; | |
default: | |
id_s = "UNKNOWN_ID"; | |
break; | |
} | |
fprintf(stderr, "OpenGL error with `source %s(0x%x)` `type %s(0x%x)` `id %s(0x%x)` of `severity %s(0x%x)`.\n", source_s, source, type_s, type, id_s, id, severity_s, severity); | |
fprintf(stderr, "Got length %d message: %s\n", length, message); | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment