


GLTEXGEN(3G)					     GLTEXGEN(3G)


NAME
       glTexGend,  glTexGenf,  glTexGeni, glTexGendv, glTexGenfv,
       glTexGeniv - control the generation of texture coordinates


C SPECIFICATION
       void glTexGend( GLenum coord,
		       GLenum pname,
		       GLdouble param )
       void glTexGenf( GLenum coord,
		       GLenum pname,
		       GLfloat param )
       void glTexGeni( GLenum coord,
		       GLenum pname,
		       GLint param )


PARAMETERS
       coord   Specifies  a  texture  coordinate.  Must be one of
	       GL_S, GL_T, GL_R, or GL_Q.

       pname   Specifies the symbolic name of the texture-coordi
	       nate	generation     function.      Must     be
	       GL_TEXTURE_GEN_MODE.

       param   Specifies  a  single-valued   texture   generation
	       parameter, one of GL_OBJECT_LINEAR, GL_EYE_LINEAR,
	       or GL_SPHERE_MAP.

C SPECIFICATION
       void glTexGendv( GLenum coord,
			GLenum pname,
			const GLdouble *params )
       void glTexGenfv( GLenum coord,
			GLenum pname,
			const GLfloat *params )
       void glTexGeniv( GLenum coord,
			GLenum pname,
			const GLint *params )


PARAMETERS
       coord  Specifies a texture coordinate.	Must  be  one  of
	      GL_S, GL_T, GL_R, or GL_Q.

       pname  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.

       params Specifies a pointer to an array of texture  genera
	      tion  parameters.	 If pname is GL_TEXTURE_GEN_MODE,
	      then the array must contain a single symbolic  con
	      stant,  one  of GL_OBJECT_LINEAR, GL_EYE_LINEAR, or



								1





GLTEXGEN(3G)					     GLTEXGEN(3G)


	      GL_SPHERE_MAP.  Otherwise, params holds the coeffi
	      cients  for the texture-coordinate generation func
	      tion 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 gener
       ation function.

       If the texture generation  function  is	GL_OBJECT_LINEAR,
       the function

			 g=p1xo+p2yo+p3zo+p4wo

       is  used, where g is the value computed for the coordinate
       named in coord, p1, p2, p3, and p4  are	the  four  values
       supplied	 in params, and xo, yo, zo, and wo are the object
       coordinates of the vertex.  This function can be used, for
       example,	 to texture-map terrain using sea level as a ref
       erence plane (defined by p1, p2, p3, and p4).   The  alti
       tude   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=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 params,
       and M is the modelview matrix when  glTexGen  is	 invoked.
       If  M  is  poorly conditioned or singular, texture coordi
       nates generated by the resulting function may  be  inaccu
       rate 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



								2





GLTEXGEN(3G)					     GLTEXGEN(3G)


       field of texture coordinates that can produce dynamic con
       tour 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 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\/fx+fy+(fz+1)2.	 Then the values assigned
       to the s and t texture coordinates are

				 s=fm+2

				 t=fm+2

       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
       from the current set of	texture	 coordinates.  Initially,
       all  texture generation functions are set to GL_EYE_LINEAR
       and are disabled.  Both s plane equations are  (1,  0,  0,
       0), both t plane equations are (0, 1, 0, 0), and all r and
       q plane equations are (0, 0, 0, 0).

       When  the  GL_ARB_multitexture  extension  is   supported,
       glTexGen	 set  the  texture  generation parameters for the
       currently   active    texture	unit,	 selected    with
       glActiveTextureARB.

ERRORS
       GL_INVALID_ENUM is generated when coord or pname is not an
       accepted	   defined    value,	or    when    pname    is
       GL_TEXTURE_GEN_MODE  and params is not an accepted defined
       value.

       GL_INVALID_ENUM	  is	generated    when    pname     is
       GL_TEXTURE_GEN_MODE, params is GL_SPHERE_MAP, and coord 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.



								3





GLTEXGEN(3G)					     GLTEXGEN(3G)


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(3G),			glCopyPixels(3G),
       glCopyTexImage2D(3G),		 glCopyTexSubImage1D(3G),
       glCopyTexSubImage2D(3G),		 glCopyTexSubImage3D(3G),
       glTexEnv(3G),	  glTexImage1D(3G),	glTexImage2D(3G),
       glTexImage3D(3G), glTexParameter(3G), glTexSubImage1D(3G),
       glTexSubImage2D(3G), glTexSubImage3D(3G)











































								4


