3D 엔진을 프로그래밍하는 데 어려움이 있습니다. 셰이더가 많이 작동하고 새로운 셰이더를 만들었습니다. 그러나 어떤 이유로, 제 유니폼 변수가 이상한 행동을 보입니다.GLSL의 유니폼이 사라짐
제복을 사용하지 않으면 해당 변수의 위치가 -1로 설정됩니다. 하지만 제 유니폼이 사용되고 있다는 것을 압니다. 이것이 제가 얻은 것입니다.
"반경"의 위치가 -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);
}
(이 사용되지 않기 때문에) :
버텍스 쉐이더 (즉, 쉐이더는 이해되지 않는다하지만 여전히 작동합니다). viewmatrix와 동일합니다. 하지만 내 "projectionMatrix"의 위치도 -1로 설정됩니다! 그건 내 말이 맞지 않아. 이제 이상한 부분이 있습니다. 줄을 제거하면 gl_Position = projectionMatrix * vec4(position,1.0);
, 영사 매트릭스의 위치가 -1보다 커집니다.
내 자바 호출은 다음과 같습니다
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