Example/GLSL Shader Compile Error Testing: Difference between revisions
< Example
mNo edit summary |
m simplifying |
||
Line 9: | Line 9: | ||
glCompileShader(shader); | glCompileShader(shader); | ||
GLint isCompiled | GLint isCompiled; | ||
glGetShaderiv(shader, GL_COMPILE_STATUS, &isCompiled); | glGetShaderiv(shader, GL_COMPILE_STATUS, &isCompiled); | ||
if(isCompiled == GL_FALSE) | if(isCompiled == GL_FALSE) | ||
{ | { | ||
GLint maxLength | GLint maxLength; | ||
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &maxLength); | glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &maxLength); | ||
// The maxLength includes the NULL character | // The maxLength includes the NULL character | ||
GLchar errorLog[maxLength]; | |||
glGetShaderInfoLog(shader, maxLength, &maxLength, | glGetShaderInfoLog(shader, maxLength, &maxLength, errorLog); | ||
// 'errorLog' now contains information that can e.g. be printed to stderr | |||
// Exit with failure. | // Exit with failure. | ||
glDeleteShader(shader); // Don't leak the shader. | glDeleteShader(shader); // Don't leak the shader. |
Revision as of 22:47, 4 December 2014
Shader compilation error checking.
GLuint shader = glCreateShader(...);
// Get strings for glShaderSource.
glShaderSource(shader, ...);
glCompileShader(shader);
GLint isCompiled;
glGetShaderiv(shader, GL_COMPILE_STATUS, &isCompiled);
if(isCompiled == GL_FALSE)
{
GLint maxLength;
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &maxLength);
// The maxLength includes the NULL character
GLchar errorLog[maxLength];
glGetShaderInfoLog(shader, maxLength, &maxLength, errorLog);
// 'errorLog' now contains information that can e.g. be printed to stderr
// Exit with failure.
glDeleteShader(shader); // Don't leak the shader.
return;
}
// Shader compilation is successful.