mmode(3G)

mmode - sets the current matrix mode

As shipped in IRIX 6.5.15. Unchanged since IRIX 6.5.

NAME
     mmode      - sets the current matrix mode

FORTRAN 77 SPECIFICATION
     subroutine mmode(m)
     integer*4 m

PARAMETERS
     m   expects a symbolic constant, one of:

         MSINGL puts the system into single-matrix mode. In single-matrix
         mode, all modeling, viewing, and projection transformations are done
         using a single matrix that combines all these transformations. This
         is the default matrix mode.

         MVIEWI puts the system into multi-matrix mode. In this mode, separate
         ModelView, Projection, and Texture matrices are maintained.  The
         ModelView matrix is modified by all matrix operations, except for
         perspe, ortho, ortho2, and window.  which always replace the current
         Projection matrix.

         MPROJE puts the system into multi-matrix mode. In this mode, separate
         ModelView, Projection, and Texture matrices are maintained.  The
         Projection matrix is modified by all matrix operations.

         MTEXTU puts the system into multi-matrix mode. In this mode, separate
         ModelView, Projection, and Texture matrices are maintained.  The
         Texture matrix is modified by all matrix operations, except for
         perspe, ortho, ortho2, and window.  which always replace the current
         Projection matrix.

DESCRIPTION
     mmode specifies which matrix is the current matrix, and also determines
     whether the system is in single-matrix mode, or in multi-matrix mode.
     The matrix mode and current matrix are determined as follows:

                   ____________________________________________
                       mmode      matrix mode   current matrix
                   ____________________________________________
                      MSINGL        single       only matrix
                      MVIEWI         multi        ModelView
                      MPROJE         multi        Projection
                      MTEXTU         multi         Texture
                   ____________________________________________
                   |





                                                               |







     In single-matrix mode, vertices are transformed directly from object-
     coordinates to clip-coordinates by a single matrix.  All matrix commands
     operate on this, the only matrix.  Single-matrix mode is the default
     mode, but its use is discouraged, because many of the newer GL rendering
     features cannot be used while the system is in single-matrix mode.
     In multi-matrix mode, vertices are transformed from object-coordinates to
     eye-coordinates by the ModelView matrix, then from eye-coordinates to
     clip-coordinates by the Projection matrix.  A third matrix, the Texture
     matrix, is maintained to transform texture coordinates.  While in multi-
     matrix mode, mmodes MVIEWI, MPROJE, and MTEXTU specify which of the three
     matrices is operated on by matrix modification commands.  Many GL
     rendering operations, including lighting, texture mapping, and user-
     defined clipping planes, require that the matrix mode be multi-matrix.

     Both the single matrix that is maintained while mmode is MSINGL mode, and
     the ModelView matrix that is maintained while not in MSINGL mode, have a
     stack depth of 32.  The Projection and Texture matrices are not stacked.
     Thus matrix commands pushma and popmat should not be called while the
     matrix mode is MPROJE or MTEXTU.

     Changes between matrix modes MVIEWI, MPROJE and MTEXTU have no effect on
     the matrix values themselves.  However, when matrix mode MSINGL is
     entered or left, all matrix stacks are forced to be empty, and all
     matrices are initialized to the identity matrix.

SEE ALSO
     clippl, getmmo, lmbind, lookat, ortho, perspe, polarv, rot, rotate,
     scale, texbin, transl, window

BUGS
     On IRIS-4D G, GT, GTX systems, and on the Personal IRIS, multi-matrix
     operation is incorrect while mmode is MPROJE.  Specifically, vertices are
     transformed only by the Projection matrix, not by the ModelView matrix.