我在使用OpenGL将正交相机转换为透视相机时遇到了一些麻烦。
目前,我的正交相机使用两个对象的中间点:

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();


上面的代码可以完美地工作,现在我正试图像这样使用它:

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();


而且我只是黑屏。有什么想法吗?我试过将向上矢量从0,0,1更改为0,1,0,并且保持不变。

任何帮助表示赞赏。

最佳答案

如果您已有使用glOrtho的代码,通常可以通过简单地将其更改为glFrustum来切换到透视投影。如果您正在编写新代码,则gluPerspectivegluLookat可能会更容易,但是对于已经使用正交投影进行工作的代码,只需调用具有相同参数的glFrustum即可轻松切换到透视图。

08-26 18:45