glutessproperty - Man Page






gluTessProperty(3G)	       OpenGL Reference		   gluTessProperty(3G)



NAME
     gluTessProperty - set a tessellation object property


C SPECIFICATION
     void gluTessProperty( GLUtesselator* tess,
			   GLenum which,
			   GLdouble data )


PARAMETERS
     tess   Specifies the tessellation object (created with gluNewTess).

     which  Specifies the property to be set.  Valid values are
	    GLU_TESS_WINDING_RULE, GLU_TESS_BOUNDARY_ONLY, GLU_TESS_TOLERANCE.

     data   Specifies the value	of the indicated property.


DESCRIPTION
     gluTessProperty is	used to	control	properties stored in a tessellation
     object.  These properties affect the way that the polygons	are
     interpreted and rendered. The legal values	for which are as follows:


     GLU_TESS_WINDING_RULE    determines which parts of	the polygon are	on the
			      "interior". data may be set to one of
			      GLU_TESS_WINDING_ODD, GLU_TESS_WINDING_NONZERO,
			      GLU_TESS_WINDING_POSITIVE, or
			      GLU_TESS_WINDING_NEGATIVE, or
			      GLU_TESS_WINDING_ABS_GEQ_TWO.

			      To understand how	the winding rule works first
			      consider that the	input contours partition the
			      plane into regions. The winding rule determines
			      which of these regions are inside	the polygon.

			      For a single contour C, the winding number of a
			      point x is simply	the signed number of
			      revolutions we make around x as we travel	once
			      around C (where CCW is positive).	When there are
			      several contours,	the individual winding numbers
			      are summed. This procedure associates a signed
			      integer value with each point x in the plane.
			      Note that	the winding number is the same for all
			      points in	a single region.

			      The winding rule classifies a region as "inside"
			      if its winding number belongs to the chosen
			      category (odd, nonzero, positive,	negative, or
			      absolute value of	at least two). The previous
			      GLU tessellator (prior to	GLU 1.2) used the



									Page 1






gluTessProperty(3G)	       OpenGL Reference		   gluTessProperty(3G)



			      "odd" rule. The "nonzero"	rule is	another	common
			      way to define the	interior. The other three
			      rules are	useful for polygon CSG operations.


     GLU_TESS_BOUNDARY_ONLY   is a boolean value ("value" should be set	to
			      GL_TRUE or GL_FALSE). When set to	GL_TRUE, a set
			      of closed	contours separating the	polygon
			      interior and exterior are	returned instead of a
			      tessellation. Exterior contours are oriented CCW
			      with respect to the normal, interior contours
			      are oriented CW. The GLU_TESS_BEGIN and
			      GLU_TESS_BEGIN_DATA callbacks use	the type
			      GL_LINE_LOOP for each contour.


     GLU_TESS_TOLERANCE	      specifies	a tolerance for	merging	features to
			      reduce the size of the output.  For example, two
			      vertices which are very close to each other
			      might be replaced	by a single vertex. The
			      tolerance	is multiplied by the largest
			      coordinate magnitude of any input	vertex;	this
			      specifies	the maximum distance that any feature
			      can move as the result of	a single merge
			      operation. If a single feature takes part	in
			      several merge operations,	the total distance
			      moved could be larger.

			      Feature merging is completely optional; the
			      tolerance	is only	a hint.	 The implementation is
			      free to merge in some cases and not in others,
			      or to never merge	features at all. The default
			      tolerance	is zero.

			      The current implementation merges	vertices only
			      if they are exactly coincident, regardless of
			      the current tolerance. A vertex is spliced into
			      an edge only if the implementation is unable to
			      distinguish which	side of	the edge the vertex
			      lies on. Two edges are merged only when both
			      endpoints	are identical.


SEE ALSO
     gluGetTessProperty










									Page 2