##
table of contents

GLSCALE(3G) | GLSCALE(3G) |

# NAME¶

**glScaled, glScalef** - multiply the current matrix by a
general scaling matrix

# C SPECIFICATION¶

void **glScaled**( GLdouble *x*,

GLdoubley, GLdoublez)

void **glScalef**( GLfloat *x*,

GLfloaty, GLfloatz)

# PARAMETERS¶

*x*,*y*,*z*- Specify scale factors along the
*x*,*y*, and*z*axes, respectively.

# DESCRIPTION¶

**glScale** produces a nonuniform scaling along the *x*,
*y*, and *z* axes. The three parameters indicate the desired scale
factor along each of the three axes.

The current matrix (see **glMatrixMode**) is multiplied by this
scale matrix, and the product replaces the current matrix as if
**glScale** were called with the following matrix as its argument:

$\left(\begin{array}{cccc}x& 0& 0& 0\\ 0& y& 0& 0\\ 0& 0& z& 0\\ 0& 0& 0& 1\end{array}\right)$

If the matrix mode is either **GL_MODELVIEW** or
**GL_PROJECTION**, all objects drawn after **glScale** is called are
scaled.

Use **glPushMatrix** and **glPopMatrix** to save and restore
the unscaled coordinate system.

# NOTES¶

If scale factors other than 1 are applied to the modelview matrix
and lighting is enabled, lighting often appears wrong. In that case, enable
automatic normalization of normals by calling **glEnable** with the
argument **GL_NORMALIZE**.

# ERRORS¶

**GL_INVALID_OPERATION** is generated if **glScale** 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**

**glGet** with argument **GL_PROJECTION_MATRIX**

**glGet** with argument **GL_TEXTURE_MATRIX**

# SEE ALSO¶

**glMatrixMode(3G)**, **glMultMatrix(3G)**,
**glPushMatrix(3G)**, **glRotate(3G)**, **glTranslate(3G)**