Specifies a light source. The number of
possible lights depends on the implementation, but at least eight lights
are supported. They are identified by symbolic names of the form GL_LIGHT$i$
where 0 <= $ i $ < GL_MAX_LIGHTS.

glGetLight returns in params the value or values
of a light source parameter. light names the light and is a symbolic name
of the form GL_LIGHT$i$ for 0 <= $i$ < GL_MAX_LIGHTS, where GL_MAX_LIGHTS
is an implementation dependent constant that is greater than or equal to
eight. pname specifies one of ten light source parameters, again by symbolic
name.

The following parameters are defined:

GL_AMBIENT

params returns four
integer or floating-point values representing the ambient intensity of the
light source. Integer values, when requested, are linearly mapped from the
internal floating-point representation such that 1.0 maps to the most positive
representable integer value, and -1.0 maps to the most negative representable
integer value. If the internal value is outside the range [-1, 1], the corresponding
integer return value is undefined. The initial value is (0, 0, 0, 1).

GL_DIFFUSE

params returns four integer or floating-point values representing the diffuse
intensity of the light source. Integer values, when requested, are linearly
mapped from the internal floating-point representation such that 1.0 maps
to the most positive representable integer value, and -1.0 maps to the most
negative representable integer value. If the internal value is outside the
range [-1, 1], the corresponding integer return value is undefined. The initial
value for GL_LIGHT0 is (1, 1, 1, 1); for other lights, the initial value
is (0, 0, 0, 0).

GL_SPECULAR

params returns four integer or floating-point
values representing the specular intensity of the light source. Integer
values, when requested, are linearly mapped from the internal floating-point
representation such that 1.0 maps to the most positive representable integer
value, and -1.0 maps to the most negative representable integer value. If
the internal value is outside the range [-1, 1], the corresponding integer
return value is undefined. The initial value for GL_LIGHT0 is (1, 1, 1,
1); for other lights, the initial value is (0, 0, 0, 0).

GL_POSITION

params
returns four integer or floating-point values representing the position
of the light source. Integer values, when requested, are computed by rounding
the internal floating-point values to the nearest integer value. The returned
values are those maintained in eye coordinates. They will not be equal to
the values specified using glLight, unless the modelview matrix was identity
at the time glLight was called. The initial value is (0, 0, 1, 0).

GL_SPOT_DIRECTION

params returns three integer or floating-point values representing the direction
of the light source. Integer values, when requested, are computed by rounding
the internal floating-point values to the nearest integer value. The returned
values are those maintained in eye coordinates. They will not be equal to
the values specified using glLight, unless the modelview matrix was identity
at the time glLight was called. Although spot direction is normalized before
being used in the lighting equation, the returned values are the transformed
versions of the specified values prior to normalization. The initial value
is (0, 0, -1).

GL_SPOT_EXPONENT

params returns a single integer or floating-point
value representing the spot exponent of the light. An integer value, when
requested, is computed by rounding the internal floating-point representation
to the nearest integer. The initial value is 0.

GL_SPOT_CUTOFF

params returns
a single integer or floating-point value representing the spot cutoff angle
of the light. An integer value, when requested, is computed by rounding
the internal floating-point representation to the nearest integer. The initial
value is 180.

GL_CONSTANT_ATTENUATION

params returns a single integer or
floating-point value representing the constant (not distance-related) attenuation
of the light. An integer value, when requested, is computed by rounding
the internal floating-point representation to the nearest integer. The initial
value is 1.

GL_LINEAR_ATTENUATION

params returns a single integer or floating-point
value representing the linear attenuation of the light. An integer value,
when requested, is computed by rounding the internal floating-point representation
to the nearest integer. The initial value is 0.

GL_QUADRATIC_ATTENUATION

params returns a single integer or floating-point value representing the
quadratic attenuation of the light. An integer value, when requested, is
computed by rounding the internal floating-point representation to the nearest
integer. The initial value is 0.