큐브를 그리기 위해 프로그램 가능한 pipline에 점 배열을 전달하는 매우 간단한 프로그램으로 작업하고 있습니다. 필자는 모든 프레임 (일부 외부 입력을 기반으로)을 기하 도형으로 변경할 수 있도록 조명을 설정하기 위해 조명을 변경하기 위해 얼굴 법선을 변경 한 후에 다시 계산해야합니다. 나는 기하학 쉐이더에서 운동으로 그것을하고 있습니다.GLSL 지오 메트릭 값을 변경할 때
정점을 : 다음과 같이
내 쉐이더
은#version 330 core
layout(location = 0) in vec3 vertexPosition_modelspace;
uniform mat4 MVP;
void main(){
gl_Position = MVP * vec4(vertexPosition_modelspace,1);
}
기하학 :
#version 330
precision highp float;
layout (triangles) in;
layout (triangle_strip) out;
layout (max_vertices = 3) out;
out vec3 normal;
void main(void)
{
for (int i = 0; i < gl_in.length(); i++) {
gl_Position = gl_in[i].gl_Position;
EmitVertex();
}
EndPrimitive();
normal = vec3(0,0,1);
}
조각 :
#version 330
in vec3 normal;
out vec4 color;
void main()
{
color = vec4(normal,1);
}
내가 법선을 계산하기 위해 노력했다 (그러나 나는 맥박이있다. 디버깅 이유로 코드를 이끌어 냈습니다.) 그리고 정상 값은 내가 프로그램을 실행할 때 놀랐습니다. 그래서 조각 색상을 정상적인 값으로 설정합니다. (실제로 정상인지 확인하기 위해) 이유가 무엇이든 '정상적인'값은 빨간색, 녹색, 흰색 및 검은 색 사이를 뒤집어서 말할 수있는 이유가 없습니다. 조각 쉐이더에서 단순히 색 벡터를 지정하면 큐브는 모든 색으로 그 색으로 잘 렌더링됩니다.
왜 보통 값이 변경됩니까?
생각하십니까?
답장을 보내 주셔서 감사합니다. 내 문제가 해결 됐어. 기하학 쉐이더에 대한 제 독서에서 저에게 그렇게 말한 것을 본 적이 없습니다. 그것은 내 자신의 무능력 이었지만. 감사. – APalmer