您的位置:首页 > 编程语言

opengl着色器编程的debug

2014-10-15 19:41 134 查看
因为着色编程中很多东西都是在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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: