我知道這聽起來像一個奇怪的「問題」,但堅持與我。
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。如果這有幫助,但我認爲這與問題沒有任何關係。
編輯:
我添加的代碼要經常檢查信息日誌着色器編譯後,它仍然使用「在」關鍵字時,不會報告任何東西。