- multiply the current matrix by a perspective matrix



C SPECIFICATION


PARAMETERS

       _param1, _param2 Specify  the coordinates for the left and
                        right vertical clipping planes.

       _param3, _param4 Specify the coordinates  for  the  bottom
                        and top horizontal clipping planes.

       _param5, _param6 Specify the distances to the near and far
                        depth clipping  planes.   Both  distances
                        must be positive.


DESCRIPTION

       glFrustum  describes  a perspective matrix that produces a
       perspective   projection.    The   current   matrix   (see
       glMatrixMode)  is multiplied by this matrix and the result
       replaces the  current  matrix,  as  if  glMultMatrix  were
       called with the following matrix as its argument:














































                      0           _e_q_n_p_<I>a_<I>r_e<I>a_q<I>m_n_p_a_r<I>e_a<I>q_m<I>n_<I>p_a_r_a_m__ B  0








           [                                                ]










                      0                     0           C  D

















                        D=-_<I>e_e<I>q_q<I>n_n<I>p_p<I>a_a<I>r_r<I>a_a<I>m_m___e<I>e_q<I>q_n<I>n_p<I>p_a<I>a_r<I>r_a<I>a_m<I>m__



       Typically, the matrix mode is GL_PROJECTION, and (_param1,
       _param3, -_param5) and (_param2, _param4,  -_param5) spec-
       ify  the points on the near clipping plane that are mapped
       to the lower left and upper right corners of  the  window,
       assuming  that  the eye is located at (0, 0, 0).  -_param6
       specifies the location of the far  clipping  plane.   Both
       _param5 and _param6 must be positive.

       Use  glPushMatrix  and glPopMatrix to save and restore the
       current matrix stack.


NOTES

       Depth buffer precision is affected by the values specified
       for _param5 and _param6.  The greater the ratio of _param6
       to _param5 is, the less effective the depth buffer will be
       at  distinguishing  between  surfaces  that  are near each
       other.  If

                              r=_e<I>e_q<I>q_n<I>n_p<I>p_a<I>a_r<I>r_a<I>a_m<I>m__

       roughly log2(r) bits of depth buffer precision  are  lost.
       Because  r  approaches  infinity  as _param5 approaches 0,
       _param5 must never be set to 0.


ERRORS

       GL_INVALID_VALUE is generated if _param5 or _param6 is not
       positive, or if _param1 = _param2, or _param3 = _param4.

       GL_INVALID_OPERATION is generated if glFrustum is executed
       between the execution of  glBegin  and  the  corresponding
       execution of glEnd.


ASSOCIATED GETS

       glGet with argument GL_MATRIX_MODE
       glGet with argument GL_MODELVIEW_MATRIX
       glGet with argument GL_PROJECTION_MATRIX
       glGet with argument GL_TEXTURE_MATRIX
       glGet with argument GL_COLOR_MATRIX


SEE ALSO

       glOrtho,    glMatrixMode,    glMultMatrix,   glPushMatrix,
       glViewport



                                                                1