我正在使用下面的代码片段根据用户的选择在正交投影和透视投影之间切换。然而,不管用户的选择如何,渲染的模型总是在正交投影中。能不能让我知道我在这里错过了什么。
如上所述,目前获得的透视投影只是正交投影的放大版本。
谢谢。
float fov = 10.0;
float Oleft = -1.0, Oright = 1.0, Obottom = -1.0, Otop = 1.0;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(proj_type==0)
gluPerspective(fov, 1, 0.1, 200);
else
glOrtho(Oleft, Oright, Obottom, Otop,0.1,50);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(10, 7, 10, 0, 0, 0, 0, 1, 0);
答案 0 :(得分:1)
正交投影实际上是FoV = 0.0f的透视图。降低FoV的透视使其看起来类似于正交。
将相机移近并将FoV增加到45-60度。 https://www.packtpub.com/graphics/9781849691727/graphics/1727_04_24.jpg https://drive.google.com/file/d/0B2jjLSK7_nvaVE9WUGZRenJ0bVE/view?usp=sharing