将正交相机转换为透视OpenGL

时间:2011-04-23 16:10:08

标签: c++ opengl

使用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并保持不变。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

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

相关问题