2012-11-20 36 views
0

我不知道如何设置距离如何让gluLookAt和glPerspective像glortho一样工作?

,我应该站在看我的2D的东西(这在中心,有一个球排名:1024/2768/2)

我使用gluLookAt和glPerspective给我的2D旋转对象更多的3D感觉

反正这里是我glOrtho使用的代码:

glMatrixMode (GL_PROJECTION); 
    glLoadIdentity(); 
    glOrthof (0, 1024, 768, 0, 0, 1000.0f); 
    glMatrixMode (GL_MODELVIEW); 
    glLoadIdentity(); 

,这是当我尝试用glPerspective和gluLookAt设置:

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的全尺寸?

+0

你究竟在做什么**试图实现? 2d“东西”应绘制在叠加层中,而不是3d视图中。 – ChrisF

+0

我想用gluLookAt和glPerspective代替glOrtho,有可能吗? – steave

+0

这不是我问的问题。你为什么要用这种方式来使用它们?你想在这里实现什么效果? – ChrisF

回答

0

好glOrtho应该产生一个平行投影,所以基本上使用gluPerspective完全是另一种方式。如果你希望找到一个gluPerspective的特例,就像glOrtho那样工作,问题是它们产生的矩阵在某些方面是不同的 - 你注意到右下角,尤其是它们产生的东西:

glOrtho

|  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点朝向观看者的)。

相关问题