2012-11-18 3 views
1

아래 그림에서 알 수 있듯이 두 개의 삼각형이 나란히 있습니다 (정면에서 보았을 때). 그러나 오른쪽에서 보면 황색 삼각형이 녹색 삼각형 옆에있는 것처럼 보입니다. 녹색 삼각형은 녹색 삼각형 옆에 있기 때문에 녹색으로 보이지 않아야합니다 (오른쪽 그림 참조). 왜 이런 일이 발생합니까? 왼쪽에서 보는 것이 좋습니다 (왼쪽보기 참조). 감사.Opengl weird viewing

FrontView의 :

Front View

우측 모습 (왜 노란색 삼각형은 여전히 ​​볼 수있다?) :

enter image description here

왼쪽보기

이 (여기에서 볼 괜찮습니다) :

enter image description here

이것은 내 렌더링 방법입니다. glColor4f를 사용하지 않고 현대적인 방식으로 색칠을해도 여전히 동일한 결과를 얻습니다. glEnable (GL_DEPTH)도 설정했습니다. 및 glDepthFunc (GL_LESS);

void display(){ 
glClear(GL_COLOR_BUFFER_BIT); 

control(0.2, 0.2, mi); 
view = updateCam(); 

glEnableVertexAttribArray(0); 
glBindBuffer(GL_ARRAY_BUFFER, vbo); 
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0); 
glEnableClientState(GL_VERTEX_ARRAY); 

model = glm::rotate(glm::mat4(1.0), 45, glm::vec3(0, 1, 0)); 
glColor4f(0, 1, 0, 1); 
glDrawArrays(GL_TRIANGLES, 0, 3); 
resetMatrix(); 

model = glm::translate(glm::mat4(1.0), glm::vec3(5, 0, 0)); 
model = glm::rotate(model, 45, glm::vec3(0, 1, 0)); 
glColor4f(1, 1, 0, 1); 
glDrawArrays(GL_TRIANGLES, 0, 3); 

glDisableVertexAttribArray(0); 
resetMatrix(); 
SDL_GL_SwapBuffers(); 

}

답변

1

당신은 당신의 컬러 버퍼를 클리어하고 있습니다. 깊이 버퍼에는 이전 프레임의 깊이 값이 여전히 포함되어 있으므로 Z 테스트가 의도 한대로 작동하지 않습니다.

클리어 둘 :

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
+0

을 설명하는, 이것은 앞면에있는 요소 계산하는 "Z- 색인"추가/백 – tobspr

+0

앗 .. ​​I는 그것을 잊은. 감사. – tambalolo

관련 문제