1

我正在使用下面的代码片段根据用户的选择在正交投影和透视投影之间切换。然而,不管用户的选择如何,渲染的模型总是处于正交投影中。你能否让我知道我在这里错过了什么。

正交

看法

如上所见,目前获得的透视投影只是正交投影的放大版本。

谢谢你。

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);
4

1 回答 1

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

于 2015-11-11T02:50:28.347 回答