因为着色编程中很多东西都是在GPU上运行的不能像cpu那样可以实时的获得错误信息必须要用一些函数来获得的:
1. 检测 着色器编译错误的原因:
GLint result1;
glGetShaderiv(vertShader, GL_COMPILE_STATUS, &result1);
if (GL_FALSE == result1)
{
fprintf(stderr, "Vertex shader compilation failed!\n");
GLint logLen;
glGetShaderiv(vertShader, GL_INFO_LOG_LENGTH, &logLen);
if (logLen > 0)
{
char *log = (char*)malloc(logLen);
GLsizei written;
glGetShaderInfoLog(vertShader, logLen, &written, log);
fprintf(stderr, "shader log: %s\n", log);
free(log);
}
}
2.检测着色器的连接错误:
GLint result;
glGetShaderiv(programHandle, GL_COMPILE_STATUS, &result);
if (GL_FALSE == result)
{
fprintf(stderr, "vertex shader compilation failed\n");
GLint loglen;
glGetProgramiv(programHandle, GL_LINK_STATUS, &loglen);
if (loglen > 0)
{
char*log = (char*)malloc(loglen);
GLsizei written;
glGetProgramInfoLog(programHandle, loglen, &written, log);
fprintf(stderr, "shader log:%s\n", log);
free(log);
}
}
else
{
glUseProgram(programHandle);
}