ENH: Add cgl/debug.hpp

This commit is contained in:
David Allemang
2023-02-04 21:09:02 -05:00
parent 6ade8c8215
commit 11a5e29518
2 changed files with 91 additions and 0 deletions

85
vis/include/cgl/debug.hpp Normal file
View File

@@ -0,0 +1,85 @@
#pragma once
#include <glad/glad.h>
#include <fmt/core.h>
#include <string>
#ifndef NDEBUG
void GLAPIENTRY log_gl_debug_callback(
GLenum source,
GLenum type,
GLuint id,
GLenum severity,
GLsizei length,
const GLchar *message,
const void *userParam
) {
std::string s_source;
switch (type) {
case GL_DEBUG_SOURCE_API:
s_source = "API:";
case GL_DEBUG_SOURCE_WINDOW_SYSTEM:
s_source = "WINDOW:";
case GL_DEBUG_SOURCE_SHADER_COMPILER:
s_source = "SHADER:";
case GL_DEBUG_SOURCE_THIRD_PARTY:
s_source = "3P:";
case GL_DEBUG_SOURCE_APPLICATION:
s_source = "APP:";
default:
s_source = "";
}
std::string s_type;
switch (type) {
case GL_DEBUG_TYPE_ERROR:
s_type = "ERROR:";
break;
case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:
s_type = "DEPRECATED:";
break;
case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:
s_type = "UNDEFINED:";
break;
case GL_DEBUG_TYPE_PORTABILITY:
s_type = "PORTABILITY:";
break;
case GL_DEBUG_TYPE_PERFORMANCE:
s_type = "PERFORMANCE:";
break;
case GL_DEBUG_TYPE_MARKER:
s_type = "MARKER:";
break;
case GL_DEBUG_TYPE_PUSH_GROUP:
s_type = "PUSH_GROUP:";
break;
case GL_DEBUG_TYPE_POP_GROUP:
s_type = "POP_GROUP:";
break;
default:
s_type = "";
break;
}
std::string s_severity;
switch (severity) {
case GL_DEBUG_SEVERITY_HIGH:
s_severity = "HIGH:";
break;
case GL_DEBUG_SEVERITY_MEDIUM:
s_severity = "MED:";
break;
case GL_DEBUG_SEVERITY_LOW:
s_severity = "LOW:";
break;
default:
s_severity = "INFO:";
break;
}
fmt::print(stderr, "GL:{}{}{} {}\n", s_source, s_type, s_severity, message);
}
#endif

View File

@@ -9,6 +9,7 @@
#include "mirror.hpp" #include "mirror.hpp"
#include "solver.hpp" #include "solver.hpp"
#include <cgl/debug.hpp>
#include <cgl/vertexarray.hpp> #include <cgl/vertexarray.hpp>
#include <cgl/shaderprogram.hpp> #include <cgl/shaderprogram.hpp>
#include <cgl/pipeline.hpp> #include <cgl/pipeline.hpp>
@@ -251,6 +252,11 @@ struct WireframeProp : public Prop<2> {
}; };
void run(const std::string &config_file, GLFWwindow* window) { void run(const std::string &config_file, GLFWwindow* window) {
#ifndef NDEBUG
glEnable(GL_DEBUG_OUTPUT);
glDebugMessageCallback(log_gl_debug_callback, nullptr);
#endif
glEnable(GL_DEPTH_TEST); glEnable(GL_DEPTH_TEST);
glEnable(GL_BLEND); glEnable(GL_BLEND);