我知道这听起来像一个奇怪的“问题”,但坚持与我。
OpenGL GLSL代码编译时它不应该是
我有一个支持OpenGL 3.3的图形卡。
但是,我正在编写代码以针对OpenGL 2.0,因此GLSL版本1.1。
我有以下GLSL代码:
#version 110
in vec4 position; // x,y,z,w (ignores w)
uniform mat4 mvpMatrix;
void main() {
gl_Position = mvpMatrix * position;
}
正如你所看到的,我已指定GLSL版本要的#Version 110
您也可能会注意到,我用的是“在”关键字的vec4的位置。
此关键字在指定的GLSL版本中不可用,但它在我的图形卡(它也支持OpenGL 3.3)上编译时没有错误。
正确的关键字应该是'属性'。
在只有OpenGL 2.1的计算机上测试时,着色器代码会收到编译错误。
为什么我的编译器不能编译出错?它不应该编译符合版本110的着色器并报告相应的错误吗?
无论如何检查这个?也许这是一个警告或什么?我不知道。帮帮我!
此外,我使用LWJGL编程Java。如果这有帮助,但我认为这与问题没有任何关系。
编辑:
我添加的代码要经常检查信息日志着色器编译后,它仍然使用“在”关键字时,不会报告任何东西。