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-
		  coordinate 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-coordinate
	       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 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 x +p y	+p z +p	w
				1 o  2 o  3 o  4 o
	  is used, where g is the value	computed for the coordinate
	  named	in coord, p , p	, p , and p  are the four values
	  supplied in param<EM>s, and x3, y	, z4, and w  are the object
	  coordinates of the vertex.  This functionocan	be used, for
	  example, to texture-map terrain using	sea level as a
	  reference plane (defined by p	, p , p	, and p	). 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 ' x +p ' y	+p ' z +p ' w
			    1	e  2   e  3   e	 4   e
	  is used, where

		   (p '	 p '  p	'  p ')=(p   p	 p   p ) M-1
		     1	  2    3    4	  1   2	  3   4
	  and x	, y , z	, and w	 are the eye coordinates of the
	  vertex, pe, pe, p , and p  are the values supplied in
	  params, and M2is 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 sup prime be the current
	  normal, after	transformation to eye coordinates. Let

			       f = (f	f   f )T
	  be the reflection vector such	that z

					  ' 'T
				f = u -	2n n  u
			      _______________
	  Finally, let m = 2 |f	2+f 2+(f +1)2. Then the	values
	  assigned to the s andxt texture coordinates are

				       __   _
				   s = m  + 2
				       f
				   t = __ + _
				       m    2
	  To enable or disable a texture-coordinate generation
	  function, 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 function associated
	  with that coordinate.	When disabled, subsequent 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).

     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.

     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
	  glCopyPixels,	glCopyTexImage2D, glCopyTexSubImage1D,
	  glCopyTexSubImage2D, glTexEnv, glTexImage1D, glTexImage2D,
	  glTexParameter, glTexSubImage1D, glTexSubImage2D