-2
我被困在編程3D引擎中。我有很多着色器在工作,並且我創建了一個新的着色器。但由於某種原因,我的統一變量顯示出一種奇怪的行爲。GLSL中的統一消失
我知道如果不使用制服,該變量的位置將被設置爲-1。但我知道我的制服正在使用。這是我得到的。 (該着色器是沒有意義的,但它應該仍然工作)
頂點着色器:
#version 150
in vec3 position;
in vec2 texCoords;
out mat4 hilf;
uniform mat4 projectionMatrix;
uniform mat4 viewMatrix;
uniform float radius;
void main(void){
hilf = projectionMatrix;
gl_Position = projectionMatrix * vec4(position,1.0);
}
「半徑」的位置被設置爲-1(因爲它不使用)。相同的視圖。但我的「投影矩陣」的位置也設置爲-1!這對我來說毫無意義。現在是最奇怪的部分;當我刪除線條:gl_Position = projectionMatrix * vec4(position,1.0);
時,投影矩陣的位置大於-1。
我的Java調用看起來是這樣的:
location_projectionMatrix = super.getUniformLocation("projectionMatrix");
location_viewMatrix = super.getUniformLocation("viewMatrix");
location_radius = super.getUniformLocation("radius");
//-----------------
protected int getUniformLocation(String uniformName){
return GL20.glGetUniformLocation(programID, uniformName);
}
這是一個錯誤?我錯過了什麼嗎?這裏發生了什麼?
同時顯示你的opengl代碼。 – eldo
沒有你的設置/獲取位置代碼,這只是一個猜測:你試圖設置一些東西(例如相同的位置)兩次。 – Ripi2