glGetShaderiv() GL_COMPILE_STATUS 返回 GL_FALSE

问题描述 投票:0回答:1

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

但是屏幕上的图像是黑白的,并且不响应任何矩阵转换。

我正在使用 OpenGL SuperBible 第五版中的 GLShaderManager 代码。调用 glCompileShader() 后,它会使用 GL_COMPILE_STATUS 参数调用 glGetShaderiv()。我设置了一个断点,果然它以 GL_FALSE 返回。

在我的另一台计算机上不会发生这种情况。知道是什么原因造成的吗?这台机器使用 ATI Radeon HD 5450,我刚刚更新了驱动程序。

opengl compiler-errors shader
1个回答
9
投票

唉,GLSL 是一头狡猾的野兽,每个显卡、驱动程序、平台和版本对于有效代码的构成都有不同的想法。

为了测试和调试,您应该始终添加代码来检查

GL_COMPILE_STATUS
GL_LINK_STATUS
并退出,或者至少在编译失败时显示警告。

使用

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

© www.soinside.com 2019 - 2024. All rights reserved.