저는 C++을 사용하고 확산 형 셰이더를 구현할 때 모든 다른 삼각형이 사라집니다. OpenGL 누락 된 삼각형 확산 셰이더
필요하다면 내 렌더링 코드를 게시 할 수 있습니다, 그러나 나는 (I 모델 뷰 행렬의 전치 역 할을 쓴) 문제가 내 정상 매트릭스 믿습니다. 다음은 등대 튜토리얼의 튜토리얼과 비슷한 일종의 셰이더 코드입니다. 정점 셰이더
#version 330
layout(location=0) in vec3 position;
layout(location=1) in vec3 normal;
uniform mat4 transform_matrix;
uniform mat4 view_model_matrix;
uniform mat4 normal_matrix;
uniform vec3 light_pos;
out vec3 light_intensity;
void main()
{
vec3 tnorm = normalize(normal_matrix * vec4(normal, 1.0)).xyz;
vec4 eye_coords = transform_matrix * vec4(position, 1.0);
vec3 s = normalize(vec3(light_pos - eye_coords.xyz)).xyz;
vec3 light_set_intensity = vec3(1.0, 1.0, 1.0);
vec3 diffuse_color = vec3(0.5, 0.5, 0.5);
light_intensity = light_set_intensity * diffuse_color * max(dot(s, tnorm), 0.0);
gl_Position = transform_matrix * vec4(position, 1.0);
}
내 프래그먼트 쉐이더는 색상의 형태 "light_intensity"을 출력한다. 내 모델은 Blender에서 직접적으로 왔으며 정점 순서를 유지하는 것과 같은 다양한 내보내기 옵션을 시도했지만 아무 것도 효과가 없었습니다.
은의 순서를 변경 시도 삼각형 중 하나에있는 정점. 그것은 굴곡 문제가있는 것 같아 –
당신은 모델을 바꾸는 것을 말하고 있습니까? – HarrisonG16
예, 얼굴이 같은 와인딩을 따라 가지 않은 것 같습니다. 꼭지점 순서로 조금 연주 해보십시오. –