gluTessCallback.3gl (GLU versions 1.0 and 1.1)







Name

  gluTessCallback - define a callback for a tessellation object





C Specification

  void gluTessCallback(	GLUtriangulatorObj *tobj,

			GLenum which,

			void (*fn)( )





Parameters



  tobj	 Specifies the tessellation object (created with gluNewTess).



  which	 Specifies the callback	being defined.	The following values are

	 valid:	GLU_BEGIN, GLU_EDGE_FLAG, GLU_VERTEX, GLU_END, and GLU_ERROR.



  fn	 Specifies the function	to be called.





Description

  gluTessCallback is used to indicate a	callback to be used by a tessellation

  object.  If the specified callback is	already	defined, then it is replaced.

  If fn	is NULL, then the existing callback is erased.



  These	callbacks are used by the tessellation object to describe how a

  polygon specified by the user	is broken into triangles.



  The legal callbacks are as follows:



  GLU_BEGIN The	begin callback is invoked like glBegin to indicate the start

	    of a (triangle) primitive.	The function takes a single argument

	    of type GLenum that	is either GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP,

	    or GL_TRIANGLES.



  GLU_EDGE_FLAG

	    The	edge flag callback is similar to glEdgeFlag.  The function

	    takes a single Boolean flag	that indicates which edges of the

	    created triangles were part	of the original	polygon	defined	by

	    the	user, and which	were created by	the tessellation process.  If

	    the	flag is	GL_TRUE, then each vertex that follows begins an edge

	    that was part of the original polygon.  If the flag	is GL_FALSE,

	    then each vertex that follows begins an edge that was generated

	    by the tessellator.	 The edge flag callback	(if defined) is

	    invoked before the first vertex callback is	made.



	    Since triangle fans	and triangle strips do not support edge

	    flags, the begin callback is not called with GL_TRIANGLE_FAN or

	    GL_TRIANGLE_STRIP if an edge flag callback is provided.  Instead,

	    the	fans and strips	are converted to independent triangles.



  GLU_VERTEX

	    The	vertex callback	is invoked between the begin and end

	    callbacks.	It is similar to glVertex, and it defines the

	    vertices of	the triangles created by the tessellation process.

	    The	function takes a pointer as its	only argument.	This pointer

	    is identical to the	opaque pointer provided	by the user when the

	    vertex was described (see gluTessVertex).



  GLU_END   The	end callback serves the	same purpose as	glEnd. It indicates

	    the	end of a primitive and it takes	no arguments.



  GLU_ERROR The	error callback is called when an error is encountered.	The

	    one	argument is of type GLenum, and	it indicates the specific

	    error that occurred.  There	are eight errors unique	to polygon

	    tessellation, named	GLU_TESS_ERROR1	through	GLU_TESS_ERROR8.

	    Character strings describing these errors can be retrieved with

	    the	gluErrorString call.





Example

  Polygons tessellated can be rendered directly	like this:



  gluTessCallback(tobj, GLU_BEGIN, glBegin);

  gluTessCallback(tobj, GLU_VERTEX, glVertex3dv);

  gluTessCallback(tobj, GLU_END, glEnd);



  gluBeginPolygon(tobj);

     gluTessVertex(tobj, v, v);

     ...  

  gluEndPolygon(tobj);



  Typically, the tessellated polygon should be stored in a display list	so

  that it does not need	to be retessellated every time it is rendered.





See Also

  glBegin, glEdgeFlag, glVertex, gluDeleteTess,	gluErrorString,	gluNewTess,

  gluTessVertex








Introduction | Alphabetic | Specification

Last Edited: Fri, May 26, 1995

AFV