X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fshaderprogram.cpp;fp=src%2Fshaderprogram.cpp;h=eb7a82df8ba2e7a21e5a4f616a582ca0d9fc25bd;hp=7ccb9706f542e56da53629c5be4f19f56a3e34d1;hb=c3509a1d169b5ac95623238dfc0badd54b5283ba;hpb=280f0d7d34b9bd377fb49580b69aebcbd60cc440 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);