Skip to content

Instantly share code, notes, and snippets.

@tilkinsc
Created June 2, 2020 06:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tilkinsc/7c058064a5264d9a51d9c85adb1e60fa to your computer and use it in GitHub Desktop.
Save tilkinsc/7c058064a5264d9a51d9c85adb1e60fa to your computer and use it in GitHub Desktop.
Default glfw and ogl error callbacks
#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