- control the generation of texture coordinates
C SPECIFICATION
PARAMETERS
_param1 Specifies a texture coordinate. Must be one of
GL_S, GL_T, GL_R, or GL_Q.
_param2 Specifies the symbolic name of the texture-coor-
dinate generation function. Must be
GL_TEXTURE_GEN_MODE.
_param3 Specifies a single-valued texture generation
parameter, one of GL_OBJECT_LINEAR,
GL_EYE_LINEAR, or GL_SPHERE_MAP.
C SPECIFICATION
PARAMETERS
_param1
Specifies a texture coordinate. Must be one of
GL_S, GL_T, GL_R, or GL_Q.
_param2
Specifies the symbolic name of the texture-coordi-
nate generation function or function parameters.
Must be GL_TEXTURE_GEN_MODE, GL_OBJECT_PLANE, or
GL_EYE_PLANE.
_param3
Specifies a pointer to an array of texture genera-
tion parameters. If _param2 is
GL_TEXTURE_GEN_MODE, then the array must contain a
single symbolic constant, one of GL_OBJECT_LINEAR,
GL_EYE_LINEAR, or GL_SPHERE_MAP. Otherwise,
_param3 holds the coefficients for the texture-
coordinate generation function specified by
_param2.
DESCRIPTION
glTexGen selects a texture-coordinate generation function
or supplies coefficients for one of the functions.
_param1 names one of the (s, t, r, q) texture coordinates;
it must be one of the symbols GL_S, GL_T, GL_R, or GL_Q.
_param2 must be one of three symbolic constants:
GL_TEXTURE_GEN_MODE, GL_OBJECT_PLANE, or GL_EYE_PLANE. If
_param2 is GL_TEXTURE_GEN_MODE, then _param3 chooses a
mode, one of GL_OBJECT_LINEAR, GL_EYE_LINEAR, or
GL_SPHERE_MAP. If _param2 is either GL_OBJECT_PLANE or
GL_EYE_PLANE, _param3 contains coefficients for the corre-
sponding texture generation function.
If the texture generation function is GL_OBJECT_LINEAR,
green grass onto foothills.
If the texture generation function is GL_EYE_LINEAR, the
function
g=p1xe+p2ye+p3ze+p4we
is used, where
(p1p2p3p4)=(p1p2p3p4)M-1
and xe, ye, ze, and we are the eye coordinates of the ver-
tex, p1, p2, p3, and p4 are the values supplied in
_param3, and M is the modelview matrix when glTexGen is
invoked. If M is poorly conditioned or singular, texture
coordinates generated by the resulting function may be
inaccurate or undefined.
Note that the values in _param3 define a reference plane
in eye coordinates. The modelview matrix that is applied
to them may not be the same one in effect when the polygon
vertices are transformed. This function establishes a
field of texture coordinates that can produce dynamic con-
tour lines on moving objects.
If _param2 is GL_SPHERE_MAP and _param1 is either GL_S or
GL_T, s and t texture coordinates are generated as fol-
lows. Let u be the unit vector pointing from the origin
to the polygon vertex (in eye coordinates). Let n sup
prime be the current normal, after transformation to eye
coordinates. Let
f=(fxfyfz)T
be the reflection vector such that
f=u-2n'n'Tu
Finally, let m=2\/f<I>x+f<I>y+(fz+1)2. Then the values assigned
to the s and t texture coordinates are
s=f_x<I>m_+_
t=f_y<I>m_+_
To enable or disable a texture-coordinate generation func-
tion, call glEnable or glDisable with one of the symbolic
texture-coordinate names (GL_TEXTURE_GEN_S,
GL_TEXTURE_GEN_T, GL_TEXTURE_GEN_R, or GL_TEXTURE_GEN_Q)
as the argument. When enabled, the specified texture
coordinate is computed according to the generating func-
tion associated with that coordinate. When disabled, sub-
sequent vertices take the specified texture coordinate
GL_TEXTURE_GEN_MODE and _param3 is not an accepted defined
value.
GL_INVALID_ENUM is generated when _param2 is
GL_TEXTURE_GEN_MODE, _param3 is GL_SPHERE_MAP, and _param1
is either GL_R or GL_Q.
GL_INVALID_OPERATION is generated if glTexGen is executed
between the execution of glBegin and the corresponding
execution of glEnd.
ASSOCIATED GETS
glGetTexGen
glIsEnabled with argument GL_TEXTURE_GEN_S
glIsEnabled with argument GL_TEXTURE_GEN_T
glIsEnabled with argument GL_TEXTURE_GEN_R
glIsEnabled with argument GL_TEXTURE_GEN_Q
SEE ALSO
glActiveTextureARB, glCopyPixels, glCopyTexImage2D,
glCopyTexSubImage1D, glCopyTexSubImage2D,
glCopyTexSubImage3D, glTexEnv, glTexImage1D, glTexImage2D,
glTexImage3D, glTexParameter, glTexSubImage1D,
glTexSubImage2D, glTexSubImage3D
1