正交和透视投影 OpenGL
Orthogonal & Perspective Projection OpenGL
我正在使用下面的代码片段根据用户的选择在正交投影和透视投影之间切换。但是,无论用户如何选择,渲染模型始终处于正交投影中。你能告诉我我在这里遗漏了什么吗?
如上所示,当前得到的透视投影只是正交投影的放大版。
谢谢。
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);
正交投影其实就是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
我正在使用下面的代码片段根据用户的选择在正交投影和透视投影之间切换。但是,无论用户如何选择,渲染模型始终处于正交投影中。你能告诉我我在这里遗漏了什么吗?
如上所示,当前得到的透视投影只是正交投影的放大版。
谢谢。
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);
正交投影其实就是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