如何在gluPerspective()的情况下知道视锥体的边界?

时间:2013-11-11 17:30:46

标签: opengl glut transformation glu

我一直在努力了解视锥体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()的参数相关;

1 个答案:

答案 0 :(得分: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)