`glScaled`, `glScalef`: multiply the current matrix by a
general scaling matrix.

C Specification |
Parameters |
Description |
Notes |
Errors |
Associated Gets |
See Also
void glScaled(
GLdouble *x*,
GLdouble *y*,
GLdouble *z*)
void glScalef(
GLfloat *x*,
GLfloat *y*,
GLfloat *z*)

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

`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:

*x*` ` |
0` ` |
0` ` |
0` ` |

0 |
*y* |
0 |
0 |

0 |
0 |
*z* |
0 |

0 |
0 |
0 |
1 |

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.

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**.
**GL_INVALID_OPERATION** is generated if `glScale` is executed between the execution
of `glBegin` and the corresponding
execution of `glEnd`.

`glGet` with argument
**GL_MATRIX_MODE**

`glGet` with argument
**GL_MODELVIEW_MATRIX**

`glGet` with argument
**GL_PROJECTION_MATRIX**

`glGet` with argument
**GL_TEXTURE_MATRIX**
`glMatrixMode`,

`glMultMatrix`,

`glPushMatrix`,

`glRotate`,

`glTranslate`