转换正交相机透视OpenGL

Converting Orthogonal Camera to Perspective OpenGL

本文关键字:透视 OpenGL 相机 转换      更新时间:2023-10-16

我在使用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即可轻松切换到透视图。