gluTessProperty()gluTessProperty()NAMEgluTessProperty - set a tessellation object property
SYNOPSIS
void gluTessProperty(
GLUtesselator* tess,
GLenum which,
GLdouble data );
PARAMETERS
Specifies the tessellation object (created with gluNewTess()). Speci‐
fies the property to be set. Valid values are GLU_TESS_WINDING_RULE,
GLU_TESS_BOUNDARY_ONLY, GLU_TESS_TOLERANCE. Specifies the value of the
indicated property.
DESCRIPTIONgluTessProperty() is used to control properties stored in a tessella‐
tion object. These properties affect the way that the polygons are
interpreted and rendered. The legal values for which are as follows:
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, 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 sim‐
ply 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 "odd" rule. The
"nonzero" rule is another common way to define the interior.
The other three rules are useful for polygon CSG operations. 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 tessel‐
lation. 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. Specifies a tolerance for merging features to
reduce the size of the output. For example, two vertices that
are very close to each other might be replaced by a single ver‐
tex. The tolerance is multiplied by the largest coordinate mag‐
nitude of any input vertex; this specifies the maximum distance
that any feature can move as the result of a single merge opera‐
tion. If a single feature takes part in several merge opera‐
tions, 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 initial toler‐
ance is 0.
The current implementation merges vertices only if they are
exactly coincident, regardless of the current tolerance. A ver‐
tex 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 ALSOgluGetTessProperty(3)gluTessProperty()