**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:

*down*130( matrix ( 2 zNear / right-left 0 0 0 0 2 zNear / top-bottom 0 0 *A* *B* *C* -1 0 0 *D* 0 ) )

*down*130*A* = right+left / right-left

*down*130*B* = top+bottom / top-bottom

*down*130*C* = -zFar+zNear / zFar-zNear

*down*130*D* = -2 zFar zNear / 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 **glPushMatrix** and **glPopMatrix** to save and restore
the current matrix stack.