gluPerspective

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
GLUPERSPECTIVE(3G)					   GLUPERSPECTIVE(3G)



NAME
       gluPerspective - set up a perspective projection matrix


C SPECIFICATION
       void gluPerspective( GLdouble fovy,
			    GLdouble aspect,
			    GLdouble zNear,
			    GLdouble zFar )

       delim $$

PARAMETERS
       fovy    Specifies the field of view angle, in degrees, in the y direc-
	       tion.

       aspect  Specifies the aspect ratio that determines the field  of	 view
	       in  the	x  direction.	The  aspect  ratio  is the ratio of x
	       (width) to y (height).

       zNear   Specifies the distance from the viewer to  the  near  clipping
	       plane (always positive).

       zFar    Specifies  the  distance	 from  the viewer to the far clipping
	       plane (always positive).

DESCRIPTION
       gluPerspective specifies a viewing frustum into the  world  coordinate
       system.	 In  general, the aspect ratio in gluPerspective should match
       the aspect ratio of the associated viewport. For example,  $  "aspect"
       ~=~ 2.0 $ means the viewer’s angle of view is twice as wide in x as it
       is in y.	 If the viewport is twice as wide as it is tall, it  displays
       the image without distortion.

       The  matrix  generated  by gluPerspective is multiplied by the current
       matrix, just as if glMultMatrix were called with the generated matrix.
       To  load the perspective matrix onto the current matrix stack instead,
       precede the call to gluPerspective with a call to glLoadIdentity.

       Given f defined as follows:

		       f  ~=~ cotangent"("{"fovy" over 2}")"




















       The generated matrix is

			   left ( ~~ down 130 { matrix {
	  ccol { {f over "aspect"} above 0 above 0 above 0 }
	  ccol { 0 above f above 0 above 0 }
	  ccol { 0 above 0 above {{"zFar" + "zNear"} over {"zNear" - "zFar"}}
       above -1 }
	  ccol	{  0  above  0	above {{2 * "zFar" * "zNear"} over {"zNear" -
       "zFar"}} above 0} }}  ~~~ right )


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 effec-
       tive the depth buffer will be at distinguishing between surfaces	 that
       are near each other.  If

			    $r ~=~ "zFar" over "zNear"$


       roughly	$log  sub  2  r$  bits	of  depth  buffer precision are lost.
       Because $r$ approaches infinity as  zNear  approaches  0,  zNear	 must
       never be set to 0.

SEE ALSO
       glFrustum(3G), glLoadIdentity(3G), glMultMatrix(3G), gluOrtho2D(3G)



							   GLUPERSPECTIVE(3G)