glGetShaderiv()GL_COMPILE_STATUS返回GL_FALSE

时间:2012-05-29 20:28:18

标签: opengl compiler-construction compiler-errors shader

我尝试在另一台计算机上打开Visual Studio项目。我不确定这是否相关,但最初我在找到MSAA像素格式时遇到问题,直到我将WGL_SAMPLES_ARB参数从8更改为4。

然而,屏幕上的图像是黑白的,并且没有响应任何矩阵变换。

我正在使用OpenGL SuperBible第5版的GLShaderManager代码。在调用glCompileShader()之后,它使用GL_COMPILE_STATUS参数调用glGetShaderiv()。我设置了一个断点,确定它正在返回GL_FALSE。

这在我的其他计算机上不会发生。知道是什么原因引起的吗?这台机器使用的是ATI Radeon HD 5450,我刚刚更新了驱动程序。

1 个答案:

答案 0 :(得分:3)

唉,GLSL是一个滑稽的野兽,每个图形板,驱动程序,平台和版本都对构成有效代码的构成有不同的看法。

对于测试和调试,如果编译失败,您应该始终添加代码来检查GL_COMPILE_STATUSGL_LINK_STATUS并挽救,或者至少显示警告。

使用glGetShaderInfoLogglGetProgramInfoLog分别从着色器编译器和链接器获取输出。这些可能会告诉你错误是什么(或编译器认为是什么)。