使用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并保持不变。
任何帮助表示感谢。
答案 0 :(得分:1)
如果您的代码已经使用glOrtho
,则通常只需将其更改为glFrustum
即可切换到透视投影。如果您正在编写新代码,gluPerspective
和gluLookat
可能会更容易,但对于已经使用正交投影工作的代码,只需调用glFrustum
即可切换到透视图。相同的参数。