From 87f0523434d918bf8702215ad855e737970323b8 Mon Sep 17 00:00:00 2001 From: cinnaboot Date: Tue, 25 Jan 2022 11:47:52 -0500 Subject: [PATCH] add extra logging for shader linking errors --- src/GLDebug.h | 9 +++++++++ src/shader.cpp | 11 ++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/GLDebug.h b/src/GLDebug.h index 618bc05..8c7ddc2 100644 --- a/src/GLDebug.h +++ b/src/GLDebug.h @@ -8,6 +8,7 @@ void dumpShader(GLuint prog_id); +const char* glEnumToString(GLenum e); void openglDebugCallback(GLenum source, GLenum type, GLuint id, @@ -59,6 +60,14 @@ glEnumToString(GLenum e) case GL_DEBUG_SEVERITY_NOTIFICATION: return "GL_DEBUG_SEVERITY_NOTIFICATION"; + case GL_NO_ERROR: return "GL_NO_ERROR"; + case GL_INVALID_ENUM: return "GL_INVALID_ENUM"; + case GL_INVALID_VALUE: return "GL_INVALID_VALUE"; + case GL_INVALID_OPERATION: return "GL_INVALID_OPERATION"; + case GL_INVALID_FRAMEBUFFER_OPERATION: + return "GL_INVALID_FRAMEBUFFER_OPERATION"; + case GL_OUT_OF_MEMORY: return "GL_OUT_OF_MEMORY"; + default: return "???"; } } diff --git a/src/shader.cpp b/src/shader.cpp index 5cb866f..e7c6401 100644 --- a/src/shader.cpp +++ b/src/shader.cpp @@ -371,7 +371,6 @@ compileAndLinkShader(ShaderProgram* shader, glShaderSource(vs_id, 1, &vert_src, NULL); glShaderSource(fs_id, 1, &frag_src, NULL); - // TODO: add a glError to string function in GLDebug.h glCompileShader(vs_id); assert(glGetError() == GL_NO_ERROR); glCompileShader(fs_id); @@ -385,6 +384,16 @@ compileAndLinkShader(ShaderProgram* shader, GLint is_linked = 0; glGetProgramiv(shader->prog_id, GL_LINK_STATUS, &is_linked); + // NOTE: log shader linking errors + if (is_linked != GL_TRUE) { + const u32 max_len = 512; + char err_str[max_len]; + i32 write_len; + glGetProgramInfoLog( + shader->prog_id, max_len, &write_len, &err_str[0]); + LOGF(Error, "Info Log: %s\n", err_str); + } + return (is_linked == GL_TRUE); }