Example/GLSL Program Link Error Testing: Difference between revisions
< Example
Example page for program linking error testing. |
No edit summary |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 4: | Line 4: | ||
GLuint program = glCreateProgram(); | GLuint program = glCreateProgram(); | ||
//Attach shaders as necessary. | // Attach shaders as necessary. | ||
glAttachShader(program, ...); | glAttachShader(program, ...); | ||
... | ... | ||
//Link the program. | // Link the program. | ||
glLinkProgram(program); | glLinkProgram(program); | ||
GLint isLinked = 0; | GLint isLinked = 0; | ||
glGetProgramiv(program, GL_LINK_STATUS, &isLinked); | glGetProgramiv(program, GL_LINK_STATUS, &isLinked); | ||
if(isLinked == GL_FALSE) | if (isLinked == GL_FALSE) | ||
{ | { | ||
GLint maxLength = 0; | GLint maxLength = 0; | ||
glGetProgramiv(program, GL_INFO_LOG_LENGTH, &maxLength); | glGetProgramiv(program, GL_INFO_LOG_LENGTH, &maxLength); | ||
//The maxLength includes the NULL character | // The maxLength includes the NULL character | ||
std::vector<GLchar> infoLog(maxLength); | std::vector<GLchar> infoLog(maxLength); | ||
glGetProgramInfoLog(program, maxLength, &maxLength, &infoLog[0]); | glGetProgramInfoLog(program, maxLength, &maxLength, &infoLog[0]); | ||
//The program is useless now. So delete it. | // The program is useless now. So delete it. | ||
glDeleteProgram(program); | glDeleteProgram(program); | ||
//Provide the infolog in whatever | // Provide the infolog in whatever manner you deem best. | ||
//Exit with failure. | // Exit with failure. | ||
return; | return; | ||
} | } | ||
</source> | </source> | ||
<noinclude>[[Category:Example Code]]</noinclude> |
Latest revision as of 11:10, 3 January 2018
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 manner you deem best.
// Exit with failure.
return;
}