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