 |
Index for Section 3 |
|
 |
Alphabetical listing for G |
|
 |
Bottom of page |
|
gluTessProperty()
NAME
gluTessProperty - set a tessellation object property
SYNOPSIS
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, 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 "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 that 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 initial tolerance is 0.
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(3)
 |
Index for Section 3 |
|
 |
Alphabetical listing for G |
|
 |
Top of page |
|