저는 OpenGL 모델 뷰어에서 작업 중이며 문제가 발생했습니다. 내 장면을 렌더링 할 때 모델이 보였던 것처럼 보였습니다. 나는 그것으로 보면서 생각 어쩌면 내 깊이 버퍼가 작동하지 않는하지만 난 그것을 장소의 코드를 가지고 :OpenGL : 깊이 버퍼링이 거꾸로 작동합니다. 와인딩 순서입니까?
glEnable(GL_DEPTH_TEST)
glDepthFunc(GL_LEQUAL)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
및
glGetIntegerv(GL_DEPTH_BITS)
가 아닌 0 값을 반환 깊이 버퍼에 대한 테스트를 (24를 반환). 그래서 깊이 테스트 해 보았습니다. 깊이 버퍼가 작동하지 않는다는 것을 발견했습니다. 역 버퍼로 작동한다는 것입니다. 그것은 앞에있는 것들 위에 뒷면을 보여줍니다. glCullFace (GL_FRONT)를 호출하면 모델이 정상적으로 렌더링됩니다. 이것은 훌륭하지만 왜 그런 일이 일어나는 지에 대한 문제를 제기하며, 나는 아마도 문제의 근원에 도달해야합니다. 내 권선 순서가 문제가 될 것 같은 주위를 둘러 보니 modelviewprojectionmatrix에 대한 내 자신의 행렬 스택을 만들었고 이것이 문제 일 수 있다고 생각합니다. 내가 카메라가 1.000로, 0.785 라드, 1.333의 측면의 수평 FOV로, 뒤로 clipplaneNear을 20 개 단위를 이동 내 장면을 렌더링, 및 30.000의 clipplaneFar 경우 내 매트릭스는 다음과 같다 :
model:
[ 1 0 0 0 ]
[ 0 1 0 0 ]
[ 0 0 1 0 ]
[ 0 0 0 1 ]
view:
[ 1 0 0 0 ]
[ 0 1 0 0 ]
[ 0 0 1 0 ]
[ 0 0 -20 1 ]
proj:
[ 2.414214 0 0 0 ]
[ 0 -3.218951 0 0 ]
[ 0 0 -1.068966 -1 ]
[ 0 0 -2.068966 0 ]
를 내가있을 때 앞면에있는 얼굴은 카메라에서 20 단위 떨어져 제대로 렌더링 된 객체를 사용하여 원하는대로 렌더링됩니다. 나는 그것을 원하고 좋아하는 것처럼 움직일 수 있고 모든 것이 작동합니다. 그러나 외계인없이 깊이가 바뀌면 내 z 값이 어딘가에서 엉망이됩니까? 모든 것은 지금까지 내가 작업해온 자원과 비슷합니다. 그리고 그게 아니라면이 거꾸로 문제가 어디서 오는 거지?
문제가있는 경우'glCullFace (GL_BACK)'로'GL_CULL_FACE'를 사용할 수 있습니까? 아니면'GL_CULL_FACE'을 사용할 수 없습니까? –
GL_BACK로 남겨두면 문제가 발생하며 사용하지 않으면 문제가 동일하게 유지됩니다. 하지만 문제가 발생한 초기 시간과 GL_FRONT없이 실행하는 방법은 GL_BACK – Pricedg