如何使gluLookAt和glPerspective像glortho一样工作?

如何使gluLookAt和glPerspective像glortho一样工作?,c,opengl,C,Opengl,我不知道如何设置距离 我应该站在哪里看我的2d资料(中心有一个球,位置:1024/2768/2) 我使用gluLookAt和GlpPerspective使我的2d旋转对象更具3d感 总之,下面是我与glOrtho一起使用的代码: glMatrixMode ( GL_PROJECTION ); glLoadIdentity(); glOrthof ( 0, 1024, 768, 0, 0, 1000.0f ); glMatrixMode ( GL_MODELVIE

我不知道如何设置距离

我应该站在哪里看我的2d资料(中心有一个球,位置:1024/2768/2)

我使用gluLookAt和GlpPerspective使我的2d旋转对象更具3d感

总之,下面是我与glOrtho一起使用的代码:

    glMatrixMode ( GL_PROJECTION );
    glLoadIdentity(); 
    glOrthof ( 0, 1024, 768, 0, 0, 1000.0f );
    glMatrixMode ( GL_MODELVIEW );
    glLoadIdentity();
这是当我尝试设置glPerspective和GLLookat时:

  glMatrixMode ( GL_PROJECTION );
    glLoadIdentity();
    gluPerspective(90,1024/768,0,300);
    gluLookAt(1024 * 0.5,768 * 0.5f,-????,   1024 * 0.5,768 * 0.5,0,   0,-1,0);
    glMatrixMode ( GL_MODELVIEW );
    glLoadIdentity();

基本上我只想要那些工作相同的代码,我不知道如何设置gluPerspective的fovy值,以及???从gluLookAt看,如何投影宽度为1024,高度为768的全尺寸?

Well Glor应该产生一个平行投影,因此本质上使用gluPerspective正好相反。如果你希望找到一个像glOrtho一样的gluPerspective的特例,问题是它们生成的矩阵在某些方面是不同的,你无法到达-请注意右下角,特别是它们生成的内容:

格洛托

   |     2                               |
   |----------      0          0      t  |
   |right-left                         x |
   |                                     |
   |                 2                   |
   |    0       ----------     0      t  |
   |            top-bottom             y |
   |                                     |
   |                                     |
   |    0           0          -2        |
   |                        --------  t  |
   |                        far-near   z |
   |                                     |
   |    0           0          0      1  |


gluPerspective

   |    f                                   |
   |  ------  0      0            0         |
   |  aspect                                |
   |                                        |
   |    0     f      0            0         |
   |                                        |
   |             zFar+zNear  2*zFar*zNear   |
   |    0     0  ----------  ------------   |
   |             zNear-zFar   zNear-zFar    |
   |                                        |
   |    0     0      -1           0         |
因此,对于初学者来说,很难正确设置2/(上下)和下一行

如果这一行是您的问题的核心:

gluLookAt(1024 * 0.5,768 * 0.5f,-????,   1024 * 0.5,768 * 0.5,0,   0,-1,0);

…那么就让你-????到一个正值,表示从场景中心到眼睛的距离(OpenGL的正Z点指向观看者)。

您实际上想要实现什么?2d“东西”应该在叠加中绘制,而不是在3d视图中。我想使用gluLookAt和GlpPerspective而不是glOrtho,可能吗?这不是我问的问题。你为什么要这样使用它们?你想在这里得到什么效果?比如说,如果我画一个四边形,它沿着y轴旋转,看起来会更有趣,我想,我的测试程序实际上没有任何3d的东西,只有2d四边形和粒子。