opengl - glGetShaderiv()GL_COMPILE_STATUS返回GL_FALS

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

但是,屏幕上的图像为黑白图像,没有响应任何矩阵变换。

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

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

最佳答案

遗憾的是,GLSL是个滑溜溜的野兽,每个图形卡,驱动程序,平台和版本对于有效代码的构成都有不同的想法。

为了进行测试和调试,您应始终添加代码以检查GL_COMPILE_STATUSGL_LINK_STATUS并纾困,或者如果编译失败则至少显示警告。

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

关于opengl - glGetShaderiv()GL_COMPILE_STATUS返回GL_FALSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10806250/

相关文章:

c# - 编译器不一致的可访问性错误,将嵌套类作为函数参数传递

compiler-errors - 为自定义MATLAB工具箱执行编译器脚本时出错

file - 处理时output.println()中的错误

c# - 为什么这一行代码与上面两行不同?

compilation - javassist编译错误没有这样的类

twitter-bootstrap - 导航栏中的两行,一列跨越两行

makefile - 在 Fedora 17 中使用 'make' 命令编译时出错

xml - 使用Perl写入xml时遇到问题

vb.net - 在VB.net故障中引发事件

c# - NHibernate错误:s