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