2013-03-11 3 views
4

깊이 버퍼가 있고 화면에 원뿔을 렌더링하고 있습니다. 그것은 작동하지만, 나는 깊이 테스트를 가능하게하는 표준을 잊어 버렸음을 깨달았습니다. 그리고 내가 그것을 켜면 아무 것도 전혀 나타나지 않습니다.깊이 테스트를 사용하면 아무 것도 나타나지 않습니다.

내 장면에는이 하나의 물체 인 원뿔이 있습니다. 따라서 그 앞에 다른 것은 없습니다. (

enter image description here

내 실험 :

glBindRenderbuffer(GL_RENDERBUFFER, m_renderbuffer); 

가 그럼 난 콘 렌더링 : 나는 렌더링 버퍼를 결합

glFramebufferRenderbuffer(GL_FRAMEBUFFER, 
           GL_DEPTH_ATTACHMENT, 
           GL_RENDERBUFFER, 
           m_depthRenderbuffer); 

:

는 깊이 버퍼는 설정 괜찮습니다 이 지저분한 콘과 함께 나는 또 다른 질문의 주제가 될 것이다. 곧 물어보십시오).

하지만, 최대한 빨리 렌더링 버퍼를 깊이 버퍼를 생성하고 바인딩 한 후이 다음 라인을 추가로 :

glEnable(GL_DEPTH_TEST)

... 다음 내 콘 마술 사라집니다. 작은 점이 아닌 화면에는 아무 것도 없습니다.

왜 그런가요?

+0

두 가지 사항을 먼저 확인해 보겠습니다. ist GL_CULL_FACE를 사용할 수 있습니까? glDepthFunc()에 대해 다른 설정을 시도 했습니까? – Dirk

+0

glEnable (GL_CULL_FACE)은 아무런 변화가 없습니다. 그러나 glDepthFunc (GL_ALWAYS)를 추가하면 깊이 버퍼 사용이 가능할 때 모든 것이 나타납니다. 내가 glDepthFunc (GL_ALWAYS)없이 작동하는 몇 가지 샘플 코드를 작업 해왔다. – johnbakers

+0

glDepthFunc (GL_ALWAYS)는 테스트를 비활성화하는 것과 동일하므로 도움이되지 않습니다. 렌더링하기 전에 깊이 버퍼를 지우셨습니까? glClear (GL_DEPTH_BUFFER_BIT)? – Dirk

답변

7

GL_DEPTH_TEST,

glClear (GL_DEPTH_BUFFER_BIT)를 사용이 깊이 버퍼가 제대로 초기화되도록 렌더링 전에 호출되어야한다.

+0

! 많은 감사, 많이 감사! – johnbakers

관련 문제