mmode(3G)
mmode - sets the current matrix mode
As shipped in IRIX 6.5.19. Unchanged since IRIX 6.5.
NAME mmode - sets the current matrix mode C SPECIFICATION void mmode(m) short m; PARAMETERS m expects a symbolic constant, one of: MSINGLE 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. MVIEWING 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 perspective, ortho, ortho2, and window which always replace the current Projection matrix. MPROJECTION 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. MTEXTURE 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 perspective, 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 ____________________________________________ MSINGLE single only matrix MVIEWING multi ModelView MPROJECTION multi Projection MTEXTURE 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 MVIEWING, MPROJECTION, and MTEXTURE 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 MSINGLE mode, and the ModelView matrix that is maintained while not in MSINGLE mode, have a stack depth of 32. The Projection and Texture matrices are not stacked. Thus matrix commands pushmatrix and popmatrix should not be called while the matrix mode is MPROJECTION or MTEXTURE. Changes between matrix modes MVIEWING, MPROJECTION and MTEXTURE have no effect on the matrix values themselves. However, when matrix mode MSINGLE is entered or left, all matrix stacks are forced to be empty, and all matrices are initialized to the identity matrix. SEE ALSO clipplane, getmmode, lmbind, lookat, ortho, perspective, polarview, rot, rotate, scale, texbind, translate, window BUGS On IRIS-4D G, GT, GTX systems, and on the Personal IRIS, multi-matrix operation is incorrect while mmode is MPROJECTION. Specifically, vertices are transformed only by the Projection matrix, not by the ModelView matrix.