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  tessellator  (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  par-
       ticular  callback 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
                 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 ``vertex''. All the gen-
                 erated vertices have dimension 3, that is, homo-
                 geneous 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 call-
                 back, 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 *user-
                 Data );

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











                 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 *user-
                 Data );

       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 compo-
                 nents: R,G,B,A. The default color callback func-
                 tion  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 ``texCo-
                 ord''. The number of texture coordinates can  be
                 1, 2, 3, or 4 depending on which type of texture
                 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.




                 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 prototype 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 argu-
                 ment. 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.

















       1.3  in favor of GLU_NURBS_ERROR.  All other accepted val-
       ues for CallBackFunc are available only if the GLU version
       is 1.3 or greater.


SEE ALSO

       gluErrorString, gluNewNurbsRenderer, gluNurbsCallbackData,
       gluNurbsProperty




                                                                1