4

我一直在尝试了解平截头体 gluPerspective() 创建的坐标。在 glOrtho 的情况下,我们明确定义坐标空间。例如:

    glOrtho(left, right,bottom,top,nearVal, farVal);

告诉我我的 x,y,z 边界是什么,我可以方便地使用

    glVertex();

但是在 gluPerspective() 的情况下,我得到了截锥体,但我不知道 x,y,z 坐标的限制,所以有时当我绘制对象时,它甚至不在视图中。

例如,如果我将截锥体定义为

      gluPerspective(45.0f, w/h, 0.1f, 100.0f); 

我画了类似的东西:

     glBegin(GL_POLYGON);
         glVertex3f(30,30,50);
         glVertex3f(-80,20,50);
         glVertex3f(60,50,50);
      glEnd();

它会在场景中的哪个位置?原产地在哪里?

此外,gluLookat() 的参数如何与 gluPerspective() 的参数相关;

4

1 回答 1

0

gluLookat() 将对象从世界坐标转换为相机坐标。

gluPerspective() 将透视应用于对象。

原点是 (0,0,0)。你把它定位在你的顶点所说的地方。

如果您想知道截锥体的正确和顶部参数,请使用:

top = n * tan((fov*0.5f) * PI / 180.0f);
r = top * (float)w/(float)h;

在你的情况下 fov = 45。

gluLookat() 和 gluPerspective() 用途不同,因此它们的论点彼此无关。

您可以使用代替 gluPerspective():

glFrustum(left,right,bottom,top,nearVal,farVal)
于 2013-11-11T18:19:15.067 回答