mirror of https://github.com/bjornbytes/lovr.git
OpenGL debug messages and contexts;
The new t.graphics.debug flag controls the following: - If enabled, a debug context is created - If disabled, a no-error context is created - If enabled, GL debug messages are forwarded to lovr.log
This commit is contained in:
parent
e3aa4c7d5d
commit
f0a5a8838b
|
@ -122,6 +122,8 @@ bool lovrPlatformCreateWindow(WindowFlags* flags) {
|
|||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_TRUE);
|
||||
glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, flags->debug);
|
||||
glfwWindowHint(GLFW_CONTEXT_NO_ERROR, !flags->debug);
|
||||
glfwWindowHint(GLFW_SAMPLES, flags->msaa);
|
||||
glfwWindowHint(GLFW_RESIZABLE, flags->resizable);
|
||||
glfwWindowHint(GLFW_SRGB_CAPABLE, GLFW_TRUE);
|
||||
|
|
|
@ -1226,6 +1226,17 @@ static void lovrGpuSetViewports(float* viewport, uint32_t count) {
|
|||
|
||||
// GPU
|
||||
|
||||
static void onMessage(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userdata) {
|
||||
int level;
|
||||
switch (severity) {
|
||||
case GL_DEBUG_SEVERITY_HIGH: level = LOG_ERROR; break;
|
||||
case GL_DEBUG_SEVERITY_MEDIUM: level = LOG_WARN; break;
|
||||
case GL_DEBUG_SEVERITY_LOW: level = LOG_INFO; break;
|
||||
default: level = LOG_DEBUG; break;
|
||||
}
|
||||
lovrLog(level, "GL", message);
|
||||
}
|
||||
|
||||
void lovrGpuInit(void* (*getProcAddress)(const char*), bool debug) {
|
||||
#ifdef LOVR_GL
|
||||
gladLoadGLLoader((GLADloadproc) getProcAddress);
|
||||
|
@ -1233,6 +1244,11 @@ void lovrGpuInit(void* (*getProcAddress)(const char*), bool debug) {
|
|||
gladLoadGLES2Loader((GLADloadproc) getProcAddress);
|
||||
#endif
|
||||
|
||||
if (debug && GLAD_GL_KHR_debug) {
|
||||
glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
|
||||
glDebugMessageCallback(onMessage, NULL);
|
||||
}
|
||||
|
||||
#ifndef LOVR_WEBGL
|
||||
state.features.astc = GLAD_GL_ES_VERSION_3_2;
|
||||
state.features.compute = GLAD_GL_ES_VERSION_3_1 || GLAD_GL_ARB_compute_shader;
|
||||
|
|
Loading…
Reference in New Issue