MirBSD manpage: glFrustum(3)


GLFRUSTUM(3G)       UNIX Programmer's Manual        GLFRUSTUM(3G)

NAME

     glFrustum - multiply the current matrix by a perspective
     matrix

C SPECIFICATION

     void glFrustum( GLdouble left,
                     GLdouble right,
                     GLdouble bottom,
                     GLdouble top,
                     GLdouble near_val,
                     GLdouble far_val )

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.

     near_val, far_val
                 Specify the distances to the near and far depth
                 clipping planes. Both distances must be posi-
                 tive.

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:

            |
            |
            |
            |
            |   ____e__r___a___
            |   right - left        0
            |                                            |
            |        0        ____e__r___a___   A           |
            |        0        top - bottom               |
            |        0              0        B       0   |
                                    0        C           |
                                             -1      0   |
                                                     D   |
                                                     0   |
                                                         |
                                                         |
                               _i__h___±__e__t_
                           A = t_o_p__t±_b__l_t_o_m_
                           B_=__t_v_a__-_±_o_e_a_r____a__l
                       C = -2__r_a_r___v__-__n_e_a_r___v_a_l_
                       D = -far_val - near_val

MirBSD #10-current     Printed 2021-12-07                       1

GLFRUSTUM(3G)       UNIX Programmer's Manual        GLFRUSTUM(3G)

     Typically, the matrix mode is GL_PROJECTION, and (left, bot-
     tom, -near_val) and (right, top,  -near_val) 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). -far_val specifies the
     location of the far clipping plane. Both near_val and
     far_val 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 near_val and far_val. The greater the ratio of far_val
     to near_val is, the less effective the depth buffer will be
     at distinguishing between surfaces that are near each other.
     If
                                 __a_____a__l
                             r = near_val
     roughly log2(r) bits of depth buffer precision are lost.
     Because r approaches infinity as near_val approaches 0,
     near_val must never be set to 0.

ERRORS

     GL_INVALID_VALUE is generated if near_val or far_val is not
     positive, or if left = right, or bottom = top.

     GL_INVALID_OPERATION is generated if glFrustum is executed
     between the execution of glBegin and the corresponding exe-
     cution 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(3G), glMatrixMode(3G), glMultMatrix(3G),
     glPushMatrix(3G), glViewport(3G)

MirBSD #10-current     Printed 2021-12-07                       2

Generated on 2021-12-07 11:07:08 by $MirOS: src/scripts/roff2htm,v 1.103 2021/01/23 20:24:35 tg Exp $ — This product includes material provided by mirabilos.

These manual pages and other documentation are copyrighted by their respective writers; their sources are available at the project’s CVSweb, AnonCVS and other mirrors. The rest is Copyright © 2002–2021 MirBSD.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report — diffs preferred.