glFrustum与gluLookAt的参数关系
glFrustum(TABLETOP_X1, TABLETOP_X2, TABLETOP_Z1, TABLETOP_Z2, TABLETOP_Y + 0.001, 10 );
gluLookAt( eyePos[0], 2 * TABLETOP_Y - eyePos[1], eyePos[2], LOOKAT_X, 2 * TABLETOP_Y - eyePos[1] + 1, LOOKAT_Z, 0.0, 0.0, 1.0 );
这两者的关系是glFrustum的参数left, right, bottom, top, gluLookAt的最后三个参数,要根据glFrustum确定的长方形来确定。眼睛面向长方体,然后头顶的方向就是glulookat最后三个参数,即up向量的值。
PS: void glFrustum(GLdouble left, GLdouble Right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far)中的参数left, right, bottom, up是根据我们观察点的位置来确定,该值是对应的 (x,y)或者 (x,z)或者 (y,z)的坐标值,这一坐标值是位于camera/eye/view space中的。要将world space的坐标转换到eye space中,用eye的点与之做加减法即可。 即以视点为原点,然后left,right …far,分别是frustum的左、右、下、上、近、远的坐标。
gluLookAt(from, to, up)中from, to, up是三维点坐标,from->to表示方向,这一方向必须与glfrustum的near plane垂直。

浙公网安备 33010602011771号