1GLUTESSPROPERTY(3G) OpenGL Manual GLUTESSPROPERTY(3G)
2
3
4
6 gluTessProperty - set a tessellation object property
7
9 void gluTessProperty(GLUtesselator* tess, GLenum which, GLdouble data);
10
12 tess
13 Specifies the tessellation object (created with gluNewTess()).
14
15 which
16 Specifies the property to be set. Valid values are
17 GLU_TESS_WINDING_RULE, GLU_TESS_BOUNDARY_ONLY, and
18 GLU_TESS_TOLERANCE.
19
20 data
21 Specifies the value of the indicated property.
22
24 gluTessProperty is used to control properties stored in a tessellation
25 object. These properties affect the way that the polygons are
26 interpreted and rendered. The legal values for which are as follows:
27
28 GLU_TESS_WINDING_RULE
29 Determines which parts of the polygon are on the ``interior''.
30 data may be set to one of GLU_TESS_WINDING_ODD,
31 GLU_TESS_WINDING_NONZERO, GLU_TESS_WINDING_POSITIVE,
32 GLU_TESS_WINDING_NEGATIVE, or GLU_TESS_WINDING_ABS_GEQ_TWO.
33
34 To understand how the winding rule works, consider that the input
35 contours partition the plane into regions. The winding rule
36 determines which of these regions are inside the polygon.
37
38 For a single contour C, the winding number of a point x is simply
39 the signed number of revolutions we make around x as we travel once
40 around C (where CCW is positive). When there are several contours,
41 the individual winding numbers are summed. This procedure
42 associates a signed integer value with each point x in the plane.
43 Note that the winding number is the same for all points in a single
44 region.
45
46 The winding rule classifies a region as ``inside'' if its winding
47 number belongs to the chosen category (odd, nonzero, positive,
48 negative, or absolute value of at least two). The previous GLU
49 tessellator (prior to GLU 1.2) used the ``odd'' rule. The
50 ``nonzero'' rule is another common way to define the interior. The
51 other three rules are useful for polygon CSG operations.
52
53 GLU_TESS_BOUNDARY_ONLY
54 Is a boolean value (``value'' should be set to GL_TRUE or
55 GL_FALSE). When set to GL_TRUE, a set of closed contours separating
56 the polygon interior and exterior are returned instead of a
57 tessellation. Exterior contours are oriented CCW with respect to
58 the normal; interior contours are oriented CW. The GLU_TESS_BEGIN
59 and GLU_TESS_BEGIN_DATA callbacks use the type GL_LINE_LOOP for
60 each contour.
61
62 GLU_TESS_TOLERANCE
63 Specifies a tolerance for merging features to reduce the size of
64 the output. For example, two vertices that are very close to each
65 other might be replaced by a single vertex. The tolerance is
66 multiplied by the largest coordinate magnitude of any input vertex;
67 this specifies the maximum distance that any feature can move as
68 the result of a single merge operation. If a single feature takes
69 part in several merge operations, the total distance moved could be
70 larger.
71
72 Feature merging is completely optional; the tolerance is only a
73 hint. The implementation is free to merge in some cases and not in
74 others, or to never merge features at all. The initial tolerance is
75 0.
76
77 The current implementation merges vertices only if they are exactly
78 coincident, regardless of the current tolerance. A vertex is
79 spliced into an edge only if the implementation is unable to
80 distinguish which side of the edge the vertex lies on. Two edges
81 are merged only when both endpoints are identical.
82
84 gluGetTessProperty(), gluNewTess()
85
87 Copyright © 1991-2006 Silicon Graphics, Inc. This document is licensed
88 under the SGI Free Software B License. For details, see
89 http://oss.sgi.com/projects/FreeB/.
90
92 opengl.org
93
94
95
96opengl.org 06/10/2014 GLUTESSPROPERTY(3G)