2011-04-23 4 views
0

OpenGL을 사용하여 직교 카메라를 원근감있는 카메라로 변환하는 데 문제가 있습니다.직교 카메라를 원근감으로 변환 OpenGL

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
gluPerspective(45.0, _winWidth/_winHeight, 1.0, 1000.0); 
glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
gluLookAt(0, 0, 800, _middlePoint[0], _middlePoint[1], 50, 0, 0, 1); 
glLoadIdentity(); 

그리고 지금 내가 이런 식으로 사용하기 위해 노력하고있어,

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glOrtho(0,_winWidth,0,_winHeight,150,-150); 
glTranslated(-_middlePoint[0]+_winWidth/2, -_middlePoint[1]+_winHeight/2, 0); 
glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 

위의 코드가 완벽하게 작동합니다 : 내가 현재 사용하고, 두 개체의 중간 지점 다음 내 직교 카메라를 가지고 단순히 검은 화면을 얻을. 이견있는 사람? 나는 0,0,1에서 0,1,0까지의 벡터를 변경하려고 시도했으며 같은 것을 유지했다.

도움을 주시면 감사하겠습니다.

답변

1

glOrtho 코드가 이미 작동하는 경우 일반적으로 glFrustum으로 변경하여 원근 투영으로 전환 할 수 있습니다. 새 코드를 작성하는 경우 gluPerspectivegluLookat이 더 쉽지만 직교 투영을 사용하여 이미 작동하는 코드의 경우 동일한 매개 변수를 사용하여 glFrustum을 호출하면 쉽게 관점으로 전환 할 수 있습니다.

+0

이 특정 예제에 어떻게 적용 할 수 있습니까? –

+0

@pirezas : 내가 말했듯이'glOrtho'를'glFrustum'으로 변경하고 코드를 완전히 변경하지 않은 채로두고 다시 컴파일하십시오. 다른 곳에서 이상한 일을하지 않았다면 투영법은 다른 변화없이 정사영에서 전망으로 바뀔 것입니다. –

+1

글쎄 나는 그것을 시도했지만 여전히 작동하지 않습니다 :/제안을 주셔서 감사합니다. –