From c8488288684ae57fff24e5367ea9e00668d8b1f5 Mon Sep 17 00:00:00 2001 From: Linloir <3145078758@qq.com> Date: Mon, 12 Dec 2022 23:00:00 +0800 Subject: [PATCH] Add error detecting in shader compiler --- FinalProject/shader.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/FinalProject/shader.cpp b/FinalProject/shader.cpp index f9811ac..4acc3c2 100644 --- a/FinalProject/shader.cpp +++ b/FinalProject/shader.cpp @@ -14,6 +14,13 @@ void VertexShader::compile(const std::string& source) { const char* sourcePtr = source.c_str(); OPENGL_EXTRA_FUNCTIONS->glShaderSource(_shaderId, 1, &sourcePtr, nullptr); OPENGL_EXTRA_FUNCTIONS->glCompileShader(_shaderId); + int success; + char infoLog[512]; + OPENGL_EXTRA_FUNCTIONS->glGetShaderiv(_shaderId, GL_COMPILE_STATUS, &success); + if (!success) { + OPENGL_EXTRA_FUNCTIONS->glGetShaderInfoLog(_shaderId, 512, nullptr, infoLog); + Logger::error("Vertex shader compilation failed: " + std::string(infoLog)); + } } FragmentShader::FragmentShader(const std::string& source){ @@ -25,6 +32,13 @@ void FragmentShader::compile(const std::string& source) { const char* sourcePtr = source.c_str(); OPENGL_EXTRA_FUNCTIONS->glShaderSource(_shaderId, 1, &sourcePtr, nullptr); OPENGL_EXTRA_FUNCTIONS->glCompileShader(_shaderId); + int success; + char infoLog[512]; + OPENGL_EXTRA_FUNCTIONS->glGetShaderiv(_shaderId, GL_COMPILE_STATUS, &success); + if (!success) { + OPENGL_EXTRA_FUNCTIONS->glGetShaderInfoLog(_shaderId, 512, nullptr, infoLog); + Logger::error("Vertex shader compilation failed: " + std::string(infoLog)); + } } GeometryShader::GeometryShader(const std::string& source) { @@ -36,6 +50,13 @@ void GeometryShader::compile(const std::string& source) { const char* sourcePtr = source.c_str(); OPENGL_EXTRA_FUNCTIONS->glShaderSource(_shaderId, 1, &sourcePtr, nullptr); OPENGL_EXTRA_FUNCTIONS->glCompileShader(_shaderId); + int success; + char infoLog[512]; + OPENGL_EXTRA_FUNCTIONS->glGetShaderiv(_shaderId, GL_COMPILE_STATUS, &success); + if (!success) { + OPENGL_EXTRA_FUNCTIONS->glGetShaderInfoLog(_shaderId, 512, nullptr, infoLog); + Logger::error("Vertex shader compilation failed: " + std::string(infoLog)); + } } ShaderProgram::ShaderProgram() {