- 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