Subversion Repositories AndroidProjects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1452 chris 1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
3
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
4
<refentry id="gluNurbsProperty">
5
    <refmeta>
6
        <refmetainfo>
7
            <copyright>
8
                <year>1991-2006</year>
9
                <holder>Silicon Graphics, Inc.</holder>
10
            </copyright>
11
        </refmetainfo>
12
        <refentrytitle>gluNurbsProperty</refentrytitle>
13
        <manvolnum>3G</manvolnum>
14
    </refmeta>
15
    <refnamediv>
16
        <refname>gluNurbsProperty</refname>
17
        <refpurpose>set a NURBS property</refpurpose>
18
    </refnamediv>
19
    <refsynopsisdiv><title>C Specification</title>
20
        <funcsynopsis>
21
            <funcprototype>
22
                <funcdef>void <function>gluNurbsProperty</function></funcdef>
23
                <paramdef>GLUnurbs* <parameter>nurb</parameter></paramdef>
24
                <paramdef>GLenum <parameter>property</parameter></paramdef>
25
                <paramdef>GLfloat <parameter>value</parameter></paramdef>
26
            </funcprototype>
27
        </funcsynopsis>
28
    </refsynopsisdiv>
29
    <!-- eqn: ignoring delim $$ -->
30
    <refsect1 id="parameters"><title>Parameters</title>
31
        <variablelist>
32
        <varlistentry>
33
            <term><parameter>nurb</parameter></term>
34
            <listitem>
35
                <para>
36
                    Specifies the NURBS object (created with <citerefentry><refentrytitle>gluNewNurbsRenderer</refentrytitle></citerefentry>).
37
                </para>
38
            </listitem>
39
        </varlistentry>
40
        <varlistentry>
41
            <term><parameter>property</parameter></term>
42
            <listitem>
43
                <para>
44
                    Specifies the property to be set. Valid values are
45
                    <constant>GLU_SAMPLING_TOLERANCE</constant>,
46
                    <constant>GLU_DISPLAY_MODE</constant>,
47
                    <constant>GLU_CULLING</constant>,
48
                    <constant>GLU_AUTO_LOAD_MATRIX</constant>,
49
                    <constant>GLU_PARAMETRIC_TOLERANCE</constant>,
50
                    <constant>GLU_SAMPLING_METHOD</constant>,
51
                    <constant>GLU_U_STEP</constant>,
52
                    <constant>GLU_V_STEP</constant>, or
53
                    <constant>GLU_NURBS_MODE</constant>.
54
                </para>
55
            </listitem>
56
        </varlistentry>
57
        <varlistentry>
58
            <term><parameter>value</parameter></term>
59
            <listitem>
60
                <para>
61
                    Specifies the value of the indicated property.
62
                    It may be a numeric value or one of
63
                    <constant>GLU_OUTLINE_POLYGON</constant>,
64
                    <constant>GLU_FILL</constant>,
65
                    <constant>GLU_OUTLINE_PATCH</constant>,
66
                    <constant>GLU_TRUE</constant>,
67
                    <constant>GLU_FALSE</constant>,
68
                    <constant>GLU_PATH_LENGTH</constant>,
69
                    <constant>GLU_PARAMETRIC_ERROR</constant>,
70
                    <constant>GLU_DOMAIN_DISTANCE</constant>,
71
                    <constant>GLU_NURBS_RENDERER</constant>, or
72
                    <constant>GLU_NURBS_TESSELLATOR</constant>.
73
                </para>
74
            </listitem>
75
        </varlistentry>
76
        </variablelist>
77
    </refsect1>
78
    <refsect1 id="description"><title>Description</title>
79
        <para>
80
            <function>gluNurbsProperty</function> is used to control properties stored in a NURBS object. These
81
            properties affect the way that a NURBS curve is rendered. The accepted
82
            values for <parameter>property</parameter> are as follows:
83
        </para>
84
        <variablelist>
85
            <varlistentry>
86
                <term><constant>GLU_NURBS_MODE</constant></term>
87
                <listitem>
88
                    <para>
89
                        <parameter>value</parameter> should be set to be either <constant>GLU_NURBS_RENDERER</constant> or
90
                        <constant>GLU_NURBS_TESSELLATOR</constant>. When set to <constant>GLU_NURBS_RENDERER</constant>, NURBS objects
91
                        are tessellated into OpenGL primitives and sent to the pipeline for
92
                        rendering. When set to <constant>GLU_NURBS_TESSELLATOR</constant>, NURBS objects are
93
                        tessellated into OpenGL primitives but the vertices, normals, colors, and/or textures are
94
                        retrieved back through a callback interface (see <citerefentry><refentrytitle>gluNurbsCallback</refentrytitle></citerefentry>). This allows the user to cache the
95
                        tessellated results for further processing.
96
                        The initial value is <constant>GLU_NURBS_RENDERER</constant>.
97
                    </para>
98
                </listitem>
99
            </varlistentry>
100
            <varlistentry>
101
                <term><constant>GLU_SAMPLING_METHOD</constant> </term>
102
                <listitem>
103
                    <para>
104
                        Specifies how a NURBS surface should be
105
                        tessellated.
106
                        <parameter>value</parameter> may be one of <constant>GLU_PATH_LENGTH</constant>,
107
                        <constant>GLU_PARAMETRIC_ERROR</constant>,  <constant>GLU_DOMAIN_DISTANCE</constant>,
108
                        <constant>GLU_OBJECT_PATH_LENGTH</constant>, or
109
                        <constant>GLU_OBJECT_PARAMETRIC_ERROR</constant>.
110
                        When set to <constant>GLU_PATH_LENGTH</constant>, the surface is rendered so that
111
                        the maximum length, in
112
                        pixels, of the edges of the tessellation polygons is no greater than
113
                        what is specified by <constant>GLU_SAMPLING_TOLERANCE</constant>.
114
                    </para>
115
                    <para>
116
                        <constant>GLU_PARAMETRIC_ERROR</constant> specifies that the surface is rendered in such a
117
                        way that the value specified by <constant>GLU_PARAMETRIC_TOLERANCE</constant> describes the
118
                        maximum distance, in pixels, between the tessellation polygons and the
119
                        surfaces they approximate.
120
                    </para>
121
                    <para>
122
                        <constant>GLU_DOMAIN_DISTANCE</constant> allows users to specify, in parametric coordinates,
123
                        how many sample points per unit length are taken in <emphasis>u</emphasis>, <emphasis>v</emphasis>
124
                        direction.
125
                    </para>
126
                    <para>
127
                        <constant>GLU_OBJECT_PATH_LENGTH</constant>  is similar to <constant>GLU_PATH_LENGTH</constant>
128
                        except that it is view independent; that is, the surface is rendered so that the maximum length, in object space, of edges of the tessellation polygons is no greater than what is specified by <constant>GLU_SAMPLING_TOLERANCE</constant>.
129
                    </para>
130
                    <para>
131
                        <constant>GLU_OBJECT_PARAMETRIC_ERROR</constant> is similar to  <constant>GLU_PARAMETRIC_ERROR</constant> except that it is view independent; that is, the surface is rendered in such a way that the value specified by <constant>GLU_PARAMETRIC_TOLERANCE</constant> describes the maximum distance, in object space, between the tessellation polygons and the surfaces they approximate.
132
                    </para>
133
                    <para>
134
                        The initial value of <constant>GLU_SAMPLING_METHOD</constant> is <constant>GLU_PATH_LENGTH</constant>.
135
                    </para>
136
                </listitem>
137
            </varlistentry>
138
            <varlistentry>
139
                <term><constant>GLU_SAMPLING_TOLERANCE</constant></term>
140
                <listitem>
141
                    <para>
142
                        Specifies the maximum length, in pixels or in object space length unit,
143
                        to use when the sampling method is set to <constant>GLU_PATH_LENGTH</constant> or
144
                        <constant>GLU_OBJECT_PATH_LENGTH</constant>.
145
                        The NURBS code is conservative when rendering a curve
146
                        or surface, so the actual length can be somewhat shorter. The initial
147
                        value is 50.0 pixels.
148
                    </para>
149
                </listitem>
150
            </varlistentry>
151
            <varlistentry>
152
                <term><constant>GLU_PARAMETRIC_TOLERANCE</constant></term>
153
                <listitem>
154
                    <para>
155
                        Specifies the maximum distance, in pixels or in object space length unit,
156
                        to use when the sampling method is <constant>GLU_PARAMETRIC_ERROR</constant> or
157
                        <constant>GLU_OBJECT_PARAMETRIC_ERROR</constant>.
158
                        The initial value is 0.5.
159
                    </para>
160
                </listitem>
161
            </varlistentry>
162
            <varlistentry>
163
                <term><constant>GLU_U_STEP</constant></term>
164
                <listitem>
165
                    <para>
166
                        Specifies the number of sample points per unit length taken
167
                        along the <emphasis>u</emphasis> axis in parametric coordinates. It is needed when
168
                        <constant>GLU_SAMPLING_METHOD</constant> is set to <constant>GLU_DOMAIN_DISTANCE</constant>.
169
                        The initial value is 100.
170
                    </para>
171
                </listitem>
172
            </varlistentry>
173
            <varlistentry>
174
                <term><constant>GLU_V_STEP</constant></term>
175
                <listitem>
176
                    <para>
177
                        Specifies the number of sample points per unit length taken
178
                        along the <emphasis>v</emphasis> axis in parametric coordinate. It is needed when
179
                        <constant>GLU_SAMPLING_METHOD</constant> is set to <constant>GLU_DOMAIN_DISTANCE</constant>. The initial
180
                        value is 100.
181
                    </para>
182
                </listitem>
183
            </varlistentry>
184
            <varlistentry>
185
                <term><constant>GLU_DISPLAY_MODE</constant></term>
186
                <listitem>
187
                    <para>
188
                        <parameter>value</parameter> can be set to
189
                        <constant>GLU_OUTLINE_POLYGON</constant>, <constant>GLU_FILL</constant>, or
190
                        <constant>GLU_OUTLINE_PATCH</constant>.
191
                        When <constant>GLU_NURBS_MODE</constant> is set to be <constant>GLU_NURBS_RENDERER</constant>,
192
                        <parameter>value</parameter> defines how a NURBS surface should be rendered.
193
                        When <parameter>value</parameter> is set to <constant>GLU_FILL</constant>, the surface is rendered as a
194
                        set of polygons. When <parameter>value</parameter> is set to
195
                        <constant>GLU_OUTLINE_POLYGON</constant>, the NURBS library draws only the outlines
196
                        of the polygons created by tessellation. When <parameter>value</parameter> is set to
197
                        <constant>GLU_OUTLINE_PATCH</constant> just the outlines of patches and trim
198
                        curves defined by the user are drawn.
199
                    </para>
200
                    <para>
201
                        When <constant>GLU_NURBS_MODE</constant> is set to be <constant>GLU_NURBS_TESSELLATOR</constant>,
202
                        <parameter>value</parameter> defines how a NURBS surface should be tessellated.
203
                        When <constant>GLU_DISPLAY_MODE</constant> is set to <constant>GLU_FILL</constant> or
204
                        <constant>GLU_OUTLINE_POLYGON</constant>,
205
                        the NURBS surface is tessellated into OpenGL triangle primitives that can be
206
                        retrieved back  through callback functions. If <constant>GLU_DISPLAY_MODE</constant> is set to
207
                        <constant>GLU_OUTLINE_PATCH</constant>, only the outlines of the patches and trim curves are generated as a sequence of line strips that can be retrieved back through callback functions.
208
                    </para>
209
                    <para>
210
                        The initial value is <constant>GLU_FILL</constant>.
211
                    </para>
212
                </listitem>
213
            </varlistentry>
214
            <varlistentry>
215
                <term><constant>GLU_CULLING</constant></term>
216
                <listitem>
217
                    <para>
218
                        <parameter>value</parameter> is a boolean value that, when set to <constant>GLU_TRUE</constant>, indicates that
219
                        a NURBS curve should be discarded prior to tessellation if its control points
220
                        lie outside the current viewport. The initial value is <constant>GLU_FALSE</constant>.
221
                    </para>
222
                </listitem>
223
            </varlistentry>
224
            <varlistentry>
225
                <term><constant>GLU_AUTO_LOAD_MATRIX</constant></term>
226
                <listitem>
227
                    <para>
228
                        <parameter>value</parameter> is a boolean value. When set to <constant>GLU_TRUE</constant>, the NURBS code
229
                        downloads the projection matrix, the modelview matrix, and the
230
                        viewport from the GL server to compute sampling and
231
                        culling
232
                        matrices for each NURBS curve that is rendered. Sampling and culling matrices
233
                        are required to determine the tessellation of a NURBS surface into line segments
234
                        or polygons and to cull a NURBS surface if it lies outside the viewport.
235
                    </para>
236
                    <para>
237
                        If this mode is set to <constant>GLU_FALSE</constant>, then the program needs
238
                        to provide a projection matrix, a modelview matrix, and a viewport
239
                        for the NURBS renderer to use to construct sampling and culling matrices.
240
                        This can be done with the <citerefentry><refentrytitle>gluLoadSamplingMatrices</refentrytitle></citerefentry> function.
241
                        This mode is initially set to <constant>GLU_TRUE</constant>.
242
                        Changing it from <constant>GLU_TRUE</constant> to <constant>GLU_FALSE</constant> does not affect
243
                        the sampling and culling matrices until
244
                        <citerefentry><refentrytitle>gluLoadSamplingMatrices</refentrytitle></citerefentry>
245
                        is called.
246
                    </para>
247
                </listitem>
248
            </varlistentry>
249
        </variablelist>
250
    </refsect1>
251
    <refsect1 id="notes"><title>Notes</title>
252
        <para>
253
            If <constant>GLU_AUTO_LOAD_MATRIX</constant> is true, sampling and culling may be
254
            executed incorrectly if NURBS routines are compiled into a display list.
255
        </para>
256
        <para>
257
            A <parameter>property</parameter> of
258
            <constant>GLU_PARAMETRIC_TOLERANCE</constant>,
259
            <constant>GLU_SAMPLING_METHOD</constant>,
260
            <constant>GLU_U_STEP</constant>, or
261
            <constant>GLU_V_STEP</constant>,
262
            or a <parameter>value</parameter> of
263
            <constant>GLU_PATH_LENGTH</constant>,
264
            <constant>GLU_PARAMETRIC_ERROR</constant>,
265
            <constant>GLU_DOMAIN_DISTANCE</constant>
266
            are only available if the GLU version is 1.1 or greater. They are not
267
            valid parameters in GLU 1.0.
268
        </para>
269
        <para>
270
            <citerefentry><refentrytitle>gluGetString</refentrytitle></citerefentry> can
271
            be used to determine the GLU version.
272
        </para>
273
        <para>
274
            <constant>GLU_NURBS_MODE</constant> is only available if the GLU version is 1.3 or
275
            greater.
276
        </para>
277
        <para>
278
            The <constant>GLU_OBJECT_PATH_LENGTH</constant> and <constant>GLU_OBJECT_PARAMETRIC_ERROR</constant>
279
            values for the <constant>GLU_SAMPLING_METHOD</constant> property are only available if
280
            the GLU version is 1.3 or greater.
281
        </para>
282
    </refsect1>
283
    <refsect1 id="seealso"><title>See Also</title>
284
        <para>
285
            <citerefentry><refentrytitle>gluGetNurbsProperty</refentrytitle></citerefentry>,
286
            <citerefentry><refentrytitle>gluGetString</refentrytitle></citerefentry>,
287
            <citerefentry><refentrytitle>gluLoadSamplingMatrices</refentrytitle></citerefentry>,
288
            <citerefentry><refentrytitle>gluNewNurbsRenderer</refentrytitle></citerefentry>,
289
            <citerefentry><refentrytitle>gluNurbsCallback</refentrytitle></citerefentry>
290
        </para>
291
    </refsect1>
292
    <refsect1 id="Copyright"><title>Copyright</title>
293
        <para>
294
            Copyright <trademark class="copyright"></trademark> 1991-2006
295
            Silicon Graphics, Inc. This document is licensed under the SGI
296
            Free Software B License. For details, see
297
            <ulink url="http://oss.sgi.com/projects/FreeB/">http://oss.sgi.com/projects/FreeB/</ulink>.
298
        </para>
299
    </refsect1>
300
</refentry>