diff options
-rw-r--r-- | progs/util/shaderutil.c | 20 | ||||
-rw-r--r-- | progs/util/shaderutil.h | 3 |
2 files changed, 23 insertions, 0 deletions
diff --git a/progs/util/shaderutil.c b/progs/util/shaderutil.c index c58c249..4db9500 100644 --- a/progs/util/shaderutil.c +++ b/progs/util/shaderutil.c @@ -140,6 +140,25 @@ LinkShaders(GLuint vertShader, GLuint fragShader) } +GLboolean +ValidateShaderProgram(GLuint program) +{ + GLint stat; + glValidateProgramARB(program); + glGetProgramiv(program, GL_VALIDATE_STATUS, &stat); + + if (!stat) { + GLchar log[1000]; + GLsizei len; + glGetProgramInfoLog(program, 1000, &len, log); + fprintf(stderr, "Program validation error:\n%s\n", log); + return 0; + } + + return (GLboolean) stat; +} + + GLdouble GetShaderCompileTime(void) { @@ -170,6 +189,7 @@ SetUniformValues(GLuint program, struct uniform_info uniforms[]) case GL_SAMPLER_3D: case GL_SAMPLER_CUBE: case GL_SAMPLER_2D_RECT_ARB: + assert(uniforms[i].value[0] >= 0.0F); glUniform1i(uniforms[i].location, (GLint) uniforms[i].value[0]); break; diff --git a/progs/util/shaderutil.h b/progs/util/shaderutil.h index 91c0d40..98c7181 100644 --- a/progs/util/shaderutil.h +++ b/progs/util/shaderutil.h @@ -36,6 +36,9 @@ CompileShaderFile(GLenum shaderType, const char *filename); extern GLuint LinkShaders(GLuint vertShader, GLuint fragShader); +extern GLboolean +ValidateShaderProgram(GLuint program); + extern GLdouble GetShaderCompileTime(void); |