NAME
	  fglFrustum - multiply	the current matrix by a	perspective
	  matrix


     FORTRAN SPECIFICATION
	  SUBROUTINE fglFrustum( REAL*8	left,
				 REAL*8	right,
				 REAL*8	bottom,
				 REAL*8	top,
				 REAL*8	zNear,
				 REAL*8	zFar )


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

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

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

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

		   (					   )
		   |  __________			   |
		   |  right-left       0       A       0   |
		   |					   |
		   |	  0	  __________   B       0   |
		   |		  top-bottom		   |
		   |	  0	       0       C       D   |
		   |					   |
		   |	  0	       0       -1      0   |
		   (					   )

				     __________
				 A = right-left
				     __________
				 B = top-bottom
				     __________
				C = -zFar-zNear
				    ____________
			       D = - zFar-zNear
	  Typically, the matrix	mode is	GL_PROJECTION, and (left,
	  bottom, -zNear) and (right, top,  -zNear) specify 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).  -zFar specifies the	location of
	  the far clipping plane.  Both	zNear and zFar must be
	  positive.

	  Use fglPushMatrix and	fglPopMatrix to	save and restore the
	  current matrix stack.

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

				   r = _____
				       zNear
	  roughly log (r) bits of depth	buffer precision are lost.
	  Because r approaches infinity	as zNear approaches 0, zNear
	  must never be	set to 0.

     ERRORS
	  GL_INVALID_VALUE is generated	if zNear or zFar is not
	  positive.

	  GL_INVALID_OPERATION is generated if fglFrustum is executed
	  between the execution	of fglBegin and	the corresponding
	  execution of fglEnd.

     ASSOCIATED	GETS
	  fglGet with argument GL_MATRIX_MODE
	  fglGet with argument GL_MODELVIEW_MATRIX
	  fglGet with argument GL_PROJECTION_MATRIX
	  fglGet with argument GL_TEXTURE_MATRIX

     SEE ALSO
	  fglOrtho, fglMatrixMode, fglMultMatrix, fglPushMatrix,
	  fglViewport