從着色器獲取制服時出現問題。該行:OpenGl GLSL uniform set返回錯誤
int u = GL20.glGetUniformLocation(program, uniform);
用於檢查字符串uniform定義的統一是否在着色器中。
下面是一個例子校驗碼:
System.out.println(GL20.glGetUniformLocation(1, "transformationMatrix")==0);
System.out.println(GL20.glGetUniformLocation(1, "projectionMatrix")==0);
而結果:
false
true
它來了奇怪的事情:頂點着色器的代碼如下:
#version 330
layout (location = 0) in vec3 pos;
layout (location = 1) in vec3 tex;
layout (location = 2) in vec3 nor;
layout (location = 3) in vec3 col;
uniform mat4 projectionMatrix;
uniform mat4 transformationMatrix;
out vec3 normal;
void main(){
normal = nor;
gl_Position = projectionMatrix * vec4(pos, 1);
}
我已經測試過重命名制服,刪除另一個,但唯一一個統一的OpenGL似乎recog nize是「投影矩陣」之一。
環境: 與Java與檯面10.4.0 Linux的LWJGL 的OpenGl