Update shader errors, add back brdffrag
[opengl.git] / program.cpp
index b1f2edeb52d2c210985fb24dadfe843d78d8c5de..74744fd0c5b76c1e8142318e3705a80188f0aa9c 100644 (file)
@@ -10,7 +10,7 @@ void attachShader(GLuint progId, string filePath, GLenum type) {
 
        if (!shader) {
                cerr << "error creating shader" << endl;
-               exit(1);
+               abort();
        }
 
        ifstream file(filePath);
@@ -26,7 +26,7 @@ void attachShader(GLuint progId, string filePath, GLenum type) {
        if (!success) {
                GLchar log[1024];
                glGetShaderInfoLog(shader, 1024, NULL, log);
-               fprintf(stderr, "error: %s\n", log);
+               fprintf(stderr, "error: %s\n%s\n", filePath.c_str(), log);
                exit(1);
        }
        glAttachShader(progId, shader);
@@ -44,7 +44,21 @@ Program::Program(const string vertexShader, const string fragmentShader) {
        if (!success) {
                GLchar log[1024];
                glGetProgramInfoLog(progId, sizeof(log), NULL, log);
-               fprintf(stderr, "error linking: %s\n", log);
+               fprintf(stderr, "error linking %s and %s\n%s\n", vertexShader.c_str(), fragmentShader.c_str(), log);
                exit(1);
        }
 }
+
+void Program::validate() const {
+       glValidateProgram(progId);
+       
+       GLint success;
+       glGetProgramiv(progId, GL_VALIDATE_STATUS, &success);
+       if (!success) {
+               GLchar log[1024];
+               glGetProgramInfoLog(progId, sizeof(log), NULL, log);
+               fprintf(stderr, "error: %s\n", log);
+               exit(1);
+       }
+}
+