No more pointer arithmetic in GL/use geom shaders
[ipdf/code.git] / src / shaderprogram.cpp
index 7ccb970..eb7a82d 100644 (file)
@@ -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);

UCC git Repository :: git.ucc.asn.au