NAME
	  fglTexGend, fglTexGenf, fglTexGeni, fglTexGendv,
	  fglTexGenfv, fglTexGeniv - control the generation of texture
	  coordinates


     FORTRAN SPECIFICATION
	  SUBROUTINE fglTexGend( INTEGER*4 coord,
				 INTEGER*4 pname,
				 REAL*8	param )
	  SUBROUTINE fglTexGenf( INTEGER*4 coord,
				 INTEGER*4 pname,
				 REAL*4	param )
	  SUBROUTINE fglTexGeni( INTEGER*4 coord,
				 INTEGER*4 pname,
				 INTEGER*4 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.

     FORTRAN SPECIFICATION
	  SUBROUTINE fglTexGendv( INTEGER*4 coord,
				  INTEGER*4 pname,
				  CHARACTER*8 params )
	  SUBROUTINE fglTexGenfv( INTEGER*4 coord,
				  INTEGER*4 pname,
				  CHARACTER*8 params )
	  SUBROUTINE fglTexGeniv( INTEGER*4 coord,
				  INTEGER*4 pname,
				  CHARACTER*8 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
	  fglTexGen 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 fglTexGen 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 fglEnable or fglDisable 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 fglTexGen is executed
	  between the execution	of fglBegin and	the corresponding
	  execution of fglEnd.

     ASSOCIATED	GETS
	  fglGetTexGen
	  fglIsEnabled with argument GL_TEXTURE_GEN_S
	  fglIsEnabled with argument GL_TEXTURE_GEN_T
	  fglIsEnabled with argument GL_TEXTURE_GEN_R
	  fglIsEnabled with argument GL_TEXTURE_GEN_Q

     SEE ALSO
	  fglCopyPixels, fglCopyTexImage2D, fglCopyTexSubImage1D,
	  fglCopyTexSubImage2D,	fglTexEnv, fglTexImage1D,
	  fglTexImage2D, fglTexParameter, fglTexSubImage1D,
	  fglTexSubImage2D