Example/GLSL Shader Compile Error Testing

From OpenGL.org
Jump to: navigation, search

Shader compilation error checking.

GLuint shader = glCreateShader(...);
 
//Get strings for glShaderSource.
glShaderSource(shader, ...);
 
glCompileShader(shader);
 
GLint isCompiled = 0;
glGetShaderiv(shader, GL_COMPILE_STATUS, &isCompiled);
if(isCompiled == GL_FALSE)
{
        GLint maxLength = 0;
        glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &maxLength);
 
        //The maxLength includes the NULL character
        std::vector<char> errorLog(maxLength);
        glGetShaderInfoLog(vertexshader, maxLength, &maxLength, &errorLog[0]);
 
        //Provide the infolog in whatever manor you deem best.
        //Exit with failure.
        glDeleteShader(shader); //Don't leak the shader.
        return;
}
 
//Shader compilation is successful.