DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

gluPerspective(3)





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)

Man(1) output converted with man2html