간단한 3D 엔진을 만들려고 노력하고 있는데, 왜 내 머리가 찢어 져서 왜 3D 라인의 색상을 바꿀 수 없는지 방황하고 있습니다. 다음은 작동하지만 항상 흰색을 렌더링합니다.OpenGL GSL의 glUniform4fv가 작동하지 않습니다.
...
float color[4] = { 0.5f, 1.0f, 0.0f, 1.0f };
glUseProgram(shader.id);
//I ommitted the model matrix and stuff because it works fine
glUniformMatrix4fv(glGetUniformLocation(shader.id, "color"), 1, GL_FALSE, color);
glBegin(GL_LINES);
glVertex3f(x, y, z);
glVertex3f(x, y+10, z);
glEnd();
...
버텍스 쉐이더 :
#version 330
in vec3 vertexPosition_modelspace;
uniform mat4 mvp;
void main(){
vec4 v = vec4(vertexPosition_modelspace,1);
gl_Position = mvp*v;
}
조각 쉐이더 :
#version 330
uniform vec4 color = vec4(1.0,1.0,1.0,1.0);
out vec4 frag;
void main(){
frag = color;
}
가 가끔 유니폼 멀리 최적화 보이지 않게 얻을 말하는 일부 문서를 읽고 나는 녹색을 그릴 수 있도록 노력하고있다 그러나 나는 픽셀의 색상을 선택하기 위해 제복을 사용하고 있기 때문에 그렇지 않습니다. 또한 glGetUniform의 반환 값은 유효하며 따라서 존재합니다 (0)입니다. 그럼 왜 망쳐 놨어? 운전수는 죽었나요?
유일한 관련성이 있거나 유사한 질문은 GLSL Shader will not render color from uniform variable이고 나는 그 대답을 이해하지 못했습니다. 복수 셰이더 란 무엇을 의미합니까? 나는 하나의 셰이더를 사용하고 있습니다. (color
이 vec4
하지 mat4
때문에) glUniform4fv
사용시기를
전능하신 하나님. 나는 너무 바보 같아서 "매트릭스"라는 키워드의 차이를 보지 못했다. 무리 감사. – user3473422