The current
normal is set to the given coordinates whenever glNormal is issued. Byte,
short, or integer arguments are converted to floating-point with a linear
mapping that maps the most positive representable integer
value to 1.0, and the most negative representable integer value to -1.0.

Normals
specified with glNormal need not have unit length. If GL_NORMALIZE is enabled,
then normals of any length specified with glNormal are normalized after
transformation. If GL_RESCALE_NORMAL is enabled, normals are scaled by a
scaling factor derived from the modelview matrix. GL_RESCALE_NORMAL requires
that the originally specified normals were of unit length, and that the
modelview matrix contain only uniform scales for proper results. To enable
and disable normalization, call glEnable and glDisable with either GL_NORMALIZE
or GL_RESCALE_NORMAL. Normalization is initially disabled.