gluNurbsCallback

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
GLUNURBSCALLBACK(3G)					 GLUNURBSCALLBACK(3G)



NAME
       gluNurbsCallback - define a callback for a NURBS object


C SPECIFICATION
       void gluNurbsCallback( GLUnurbs* nurb,
			      GLenum which,
			      _GLUfuncptr CallBackFunc )


PARAMETERS
       nurb	     Specifies	   the	  NURBS	   object    (created	 with
		     gluNewNurbsRenderer).

       which	     Specifies the callback being defined.  Valid values  are
		     GLU_NURBS_BEGIN,	GLU_NURBS_VERTEX,   GLU_NURBS_NORMAL,
		     GLU_NURBS_COLOR, GLU_NURBS_TEXTURE_COORD, GLU_NURBS_END,
		     GLU_NURBS_BEGIN_DATA,	       GLU_NURBS_VERTEX_DATA,
		     GLU_NURBS_NORMAL_DATA,		GLU_NURBS_COLOR_DATA,
		     GLU_NURBS_TEXTURE_COORD_DATA,   GLU_NURBS_END_DATA,  and
		     GLU_NURBS_ERROR.

       CallBackFunc  Specifies the function that the callback calls.

DESCRIPTION
       gluNurbsCallback is used to define a callback to be used	 by  a	NURBS
       object.	 If  the  specified  callback  is already defined, then it is
       replaced.  If CallBackFunc is NULL, then this callback  will  not  get
       invoked and the related data, if any, will be lost.

       Except the error callback, these callbacks are used by NURBS tessella-
       tor (when GLU_NURBS_MODE is set to be GLU_NURBS_TESSELLATOR) to return
       back  the  OpenGL  polygon primitives resulting from the tessellation.
       Note that there are two versions of each callback:  one	with  a	 user
       data  pointer and one without. If both versions for a particular call-
       back are specified then the callback with the user data	pointer	 will
       be  used.  Note	that  ‘‘userData’’  is a copy of the pointer that was
       specified at the last call to gluNurbsCallbackData.

       The error callback function is effective no matter  which  value	 that
       GLU_NURBS_MODE  is set to.  All other callback functions are effective
       only when GLU_NURBS_MODE is set to GLU_NURBS_TESSELLATOR.

       The legal callbacks are as follows:

       GLU_NURBS_BEGIN
		 The begin callback indicates the start of a  primitive.  The
		 function  takes  a single argument of type GLenum, which can
		 be  one   of	GL_LINES,   GL_LINE_STRIP,   GL_TRIANGLE_FAN,
		 GL_TRIANGLE_STRIP,   GL_TRIANGLES,   or  GL_QUAD_STRIP.  The
		 default begin callback function is NULL. The function proto-
		 type for this callback looks like:
		 void begin ( GLenum type );

       GLU_NURBS_BEGIN_DATA
		 The  same  as	the  GLU_NURBS_BEGIN  callback except that it
		 takes an additional pointer argument. This pointer is a copy
		 of  the  pointer  that	 was  specified	 at  the last call to
		 gluNurbsCallbackData.	 The  default  callback	 function  is
		 NULL.	The  function  prototype  for  this callback function
		 looks like:
		 void beginData (GLenum type, void *userData);

       GLU_NURBS_VERTEX
		 The vertex callback indicates a vertex of the primitive. The
		 coordinates of the vertex are stored in the parameter ‘‘ver-
		 tex’’. All the generated vertices have dimension 3, that is,
		 homogeneous  coordinates  have	 been transformed into affine
		 coordinates. The default vertex callback function  is	NULL.
		 The  function	prototype  for	this  callback function looks
		 like:
		 void vertex ( GLfloat *vertex );

       GLU_NURBS_VERTEX_DATA
		 This is the same as the  GLU_NURBS_VERTEX  callback,  except
		 that  it  takes an additional pointer argument. This pointer
		 is a copy of the pointer that was specified at the last call
		 to  gluNurbsCallbackData.   The default callback function is
		 NULL. The function  prototype	for  this  callback  function
		 looks like:
		 void vertexData ( GLfloat *vertex, void *userData );

       GLU_NURBS_NORMAL
		 The  normal callback is invoked as the vertex normal is gen-
		 erated.  The components of the	 normal	 are  stored  in  the
		 parameter  ‘‘normal’’.	  In  the  case of a NURBS curve, the
		 callback function is effective only when the user provides a
		 normal	 map  (GL_MAP1_NORMAL).	  In the case of a NURBS sur-
		 face, if a normal map (GL_MAP2_NORMAL) is provided, then the
		 generated normal is computed from the normal map.  If a nor-
		 mal map is not provided then a surface normal is computed in
		 a  manner  similar  to	 that  described  for evaluators when
		 GL_AUTO_NORMAL is enabled.



































		 The default normal callback function is NULL.	The  function
		 prototype for this callback function looks like:
		 void normal ( GLfloat *normal );

       GLU_NURBS_NORMAL_DATA
		 The  same  as	the  GLU_NURBS_NORMAL callback except that it
		 takes an additional pointer argument. This pointer is a copy
		 of  the  pointer  that	 was  specified	 at  the last call to
		 gluNurbsCallbackData.	 The  default  callback	 function  is
		 NULL.	The  function  prototype  for  this callback function
		 looks like:
		 void normalData ( GLfloat *normal, void *userData );

       GLU_NURBS_COLOR
		 The color callback is invoked as the color of	a  vertex  is
		 generated.   The  components  of the color are stored in the
		 parameter ‘‘color’’.  This callback is effective  only	 when
		 the   user   provides	 a   color  map	 (GL_MAP1_COLOR_4  or
		 GL_MAP2_COLOR_4).  ‘‘color’’	contains   four	  components:
		 R,G,B,A.  The	default	 color callback function is NULL. The
		 prototype for this callback function looks like:
		 void color ( GLfloat *color );

       GLU_NURBS_COLOR_DATA
		 The same as the  GLU_NURBS_COLOR  callback  except  that  it
		 takes an additional pointer argument. This pointer is a copy
		 of the pointer that  was  specified  at  the  last  call  to
		 gluNurbsCallbackData.	 The  default  callback	 function  is
		 NULL. The function  prototype	for  this  callback  function
		 looks like:
		 void colorData ( GLfloat *color, void *userData );

       GLU_NURBS_TEXTURE_COORD
		 The  texture  callback is invoked as the texture coordinates
		 of a vertex are generated. These coordinates are  stored  in
		 the  parameter	 ‘‘texCoord’’.	The number of texture coordi-
		 nates can be 1, 2, 3, or 4 depending on which type  of	 tex-
		 ture	  map	 is    specified    (GL_MAP1_TEXTURE_COORD_1,
		 GL_MAP1_TEXTURE_COORD_2,	     GL_MAP1_TEXTURE_COORD_3,
		 GL_MAP1_TEXTURE_COORD_4,	     GL_MAP2_TEXTURE_COORD_1,
		 GL_MAP2_TEXTURE_COORD_2,	     GL_MAP2_TEXTURE_COORD_3,
		 GL_MAP2_TEXTURE_COORD_4).   If	 no texture map is specified,
		 this callback function will not be called.























		 The default texture callback function is NULL. The  function
		 prototype for this callback function looks like:
		 void texCoord ( GLfloat *texCoord );

	GLU_NURBS_TEXTURE_COORD_DATA
		 This  is  the	same as the GLU_NURBS_TEXTURE_COORD callback,
		 except that it takes an additional  pointer  argument.	 This
		 pointer  is  a copy of the pointer that was specified at the
		 last call to  gluNurbsCallbackData.   The  default  callback
		 function  is  NULL. The function prototype for this callback
		 function looks like:
		 void texCoordData (GLfloat *texCoord, void *userData);

       GLU_NURBS_END
		 The end callback is invoked at the end of a  primitive.  The
		 default  end  callback function is NULL. The function proto-
		 type for this callback function looks like:
		 void end ( void );

       GLU_NURBS_END_DATA
		 This is the same as the GLU_NURBS_END callback, except	 that
		 it  takes  an additional pointer argument. This pointer is a
		 copy of the pointer that was specified at the last  call  to
		 gluNurbsCallbackData.	 The  default  callback	 function  is
		 NULL. The function  prototype	for  this  callback  function
		 looks like:
		 void endData ( void  *userData );

       GLU_NURBS_ERROR
		 The  error  function is called when an error is encountered.
		 Its single argument is of type GLenum, and it indicates  the
		 specific error that occurred.	There are 37 errors unique to
		 NURBS	named  GLU_NURBS_ERROR1	 through   GLU_NURBS_ERROR37.
		 Character  strings  describing these errors can be retrieved
		 with gluErrorString.
































NOTES
       gluNurbsCallback is available only  if  the  GLU	 version  is  1.2  or
       greater.

       GLU  version  1.2 supports only the GLU_ERROR parameter for which. The
       GLU_ERROR  value	 is  deprecated	 in  GLU  version  1.3	in  favor  of
       GLU_NURBS_ERROR.	  All  other  accepted	values	for  CallBackFunc are
       available only if the GLU version is 1.3 or greater.

SEE ALSO
       gluErrorString(3G), gluNewNurbsRenderer(3G), gluNurbsCallbackData(3G),
       gluNurbsProperty(3G)




							 GLUNURBSCALLBACK(3G)