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

## NAME

**glPushMatrix, glPopMatrix** - push and pop the current matrix
stack

## C SPECIFICATION

void **glPushMatrix**( void )

## C SPECIFICATION

void **glPopMatrix**( void )

## DESCRIPTION

There is a stack of matrices for each of the matrix modes.
In **GL_MODELVIEW** mode, the stack depth is at least 32. In the
other modes, **GL_COLOR**, const(PROJECTION), and **GL_TEXTURE**,
the depth is at least 2. The current matrix in any mode is
the matrix on the top of the stack for that mode.
**glPushMatrix** pushes the current matrix stack down by one,
duplicating the current matrix. That is, after a
**glPushMatrix** call, the matrix on top of the stack is identi-
cal to the one below it.
**glPopMatrix** pops the current matrix stack, replacing the
current matrix with the one below it on the stack.
Initially, each of the stacks contains one matrix, an iden-
tity matrix.
It is an error to push a full matrix stack, or to pop a
matrix stack that contains only a single matrix. In either
case, the error flag is set and no other change is made to
GL state.

## ERRORS

**GL_STACK_OVERFLOW** is generated if **glPushMatrix** is called
while the current matrix stack is full.
**GL_STACK_UNDERFLOW** is generated if **glPopMatrix** is called
while the current matrix stack contains only a single
matrix.
**GL_INVALID_OPERATION** is generated if **glPushMatrix** or
**glPopMatrix** is executed between the execution of **glBegin** and
the corresponding execution of **glEnd**.

## ASSOCIATED GETS

**glGet** with argument **GL_MATRIX_MODE**
**glGet** with argument **GL_COLOR_MATRIX**
**glGet** with argument **GL_MODELVIEW_MATRIX**
MirBSD #10-current Printed 2021-12-07 1
GLPUSHMATRIX(3G) UNIX Programmer's Manual GLPUSHMATRIX(3G)
**glGet** with argument **GL_PROJECTION_MATRIX**
**glGet** with argument **GL_TEXTURE_MATRIX**
**glGet** with argument **GL_COLOR_STACK_DEPTH**
**glGet** with argument **GL_MODELVIEW_STACK_DEPTH**
**glGet** with argument **GL_PROJECTION_STACK_DEPTH**
**glGet** with argument **GL_TEXTURE_STACK_DEPTH**
**glGet** with argument **GL_MAX_MODELVIEW_STACK_DEPTH**
**glGet** with argument **GL_MAX_PROJECTION_STACK_DEPTH**
**glGet** with argument **GL_MAX_TEXTURE_STACK_DEPTH**

## SEE ALSO

**glFrustum(3G)**, **glLoadIdentity(3G)**, **glLoadMatrix(3G)**,
**glMatrixMode(3G)**, **glMultMatrix(3G)**, **glOrtho(3G)**,
**glRotate(3G)**, **glScale(3G)**, **glTranslate(3G)**, **glViewport(3G)**
MirBSD #10-current Printed 2021-12-07 2