X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=src%2Fshaderprogram.cpp;h=eb7a82df8ba2e7a21e5a4f616a582ca0d9fc25bd;hb=57c3c69cbc7d9b3724874fd83cd001984ac21b6a;hp=7ccb9706f542e56da53629c5be4f19f56a3e34d1;hpb=a851cf197844a2eb15fd5ee2c350ee296e415dca;p=ipdf%2Fcode.git diff --git a/src/shaderprogram.cpp b/src/shaderprogram.cpp index 7ccb970..eb7a82d 100644 --- a/src/shaderprogram.cpp +++ b/src/shaderprogram.cpp @@ -1,4 +1,5 @@ #include "shaderprogram.h" +#include "log.h" using namespace IPDF; @@ -27,6 +28,16 @@ bool ShaderProgram::AttachShader(const char *src, GLenum type) GLuint shader_obj = glCreateShader(type); glShaderSource(shader_obj, 1, &src, 0); glCompileShader(shader_obj); + int did_compile = 0; + glGetShaderiv(shader_obj, GL_COMPILE_STATUS, &did_compile); + if (!did_compile) + { + char info_log[2048]; + + glGetShaderInfoLog(shader_obj, 2048, nullptr, info_log); + Error("Shader compile error: %s\n", info_log); + return false; + } m_shaders.push_back(Shader{type, shader_obj}); LazyCreateProgram(); @@ -44,6 +55,11 @@ bool ShaderProgram::AttachFragmentProgram(const char *src) return AttachShader(src, GL_FRAGMENT_SHADER); } +bool ShaderProgram::AttachGeometryProgram(const char *src) +{ + return AttachShader(src, GL_GEOMETRY_SHADER); +} + bool ShaderProgram::Link() { glLinkProgram(m_program);