T
glTexGen
Chapter 18
432
params Specifies a pointer to an array of texture generation parameters. If
pname 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, params holds
the coefficients for the texture-coordinate generation function specified
by pname.
Description
glTexGen selects a texture-coordinate generation function or supplies coefficients for one
of the functions. coord 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. pname must be one of three symbolic
constants: GL_TEXTURE_GEN_MODE, GL_OBJECT_PLANE, or GL_EYE_PLANE. If
pname is GL_TEXTURE_GEN_MODE, then params chooses a mode, one of
GL_OBJECT_LINEAR, GL_EYE_LINEAR, or GL_SPHERE_MAP. If pname is either
GL_OBJECT_PLANE or GL_EYE_PLANE, params contains coefficients for the
corresponding texture generation function.
If the texture generation function is GL_OBJECT_LINEAR, the function
g = p
1
x
o
+ p
2
y
o
+ p
3
z
o
+ p
4
w
o
is used, where g is the value computed for the coordinate named in coord, p
1
,p
2
,p
3
, and
p
4
are the four values supplied in params, and x
o
,y
o
,z
o
, and w
o
are the object coordinates
of the vertex. This function can be used, for example, to texture-map terrain using sea
level as a reference plane (defined by p
1
, p
2
, p
3
, and p
4
). The altitude of a terrain vertex
is computed by the GL_OBJECT_LINEAR coordinate generation function as its distance
from sea level; that altitude can then be used to index the texture image to map white
snow onto peaks and green grass onto foothills.
If the texture generation function is GL_EYE_LINEAR, the function
g = p
1’
x
e
+ p
2’
y
e
+ p
3’
z
e
+ p
4’
w
e
is used, where
( p
1’
p
2’
p
3’
p
4’
) = ( p
1
p
2
p
3
p
4
) M
-1
and x
e
, y
e
, z
e
, and w
e
are the eye coordinates of the vertex, p
1
, p
2
, p
3
, and p
4
are the
values supplied in params, 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 params 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 contour lines on moving objects.
If pname is GL_SPHERE_MAP and coord is either GL_S or GL_T, s and t texture
coordinates are generated as follows. Let u be the unit vector pointing from the origin to
the polygon vertex (in eye coordinates). Let n’ be the current normal, after
transformation to eye coordinates. Let f = (f
x
f
y
f
z
)
T
be the reflection vector such that
f = u 2n’ n’
T
u