Example/GLSL Program Link Error Testing

From OpenGL Wiki
< Example
Revision as of 04:14, 22 January 2013 by Alfonse (talk | contribs) (Example page for program linking error testing.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Program Linking error checking.

GLuint program = glCreateProgram();

//Attach shaders as necessary.
glAttachShader(program, ...);
...

//Link the program.
glLinkProgram(program);

GLint isLinked = 0;
glGetProgramiv(program, GL_LINK_STATUS, &isLinked);
if(isLinked == GL_FALSE)
{
	GLint maxLength = 0;
	glGetProgramiv(program, GL_INFO_LOG_LENGTH, &maxLength);

	//The maxLength includes the NULL character
	std::vector<GLchar> infoLog(maxLength);
	glGetProgramInfoLog(program, maxLength, &maxLength, &infoLog[0]);

	//The program is useless now. So delete it.
	glDeleteProgram(program);

	//Provide the infolog in whatever manor you deem best.
	//Exit with failure.
	return;
}