301 lines
17 KiB
XML
301 lines
17 KiB
XML
|
<?xml version="1.0" encoding="UTF-8"?>
|
||
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
|
||
|
"http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
|
||
|
<refentry id="gluNurbsProperty">
|
||
|
<refmeta>
|
||
|
<refmetainfo>
|
||
|
<copyright>
|
||
|
<year>1991-2006</year>
|
||
|
<holder>Silicon Graphics, Inc.</holder>
|
||
|
</copyright>
|
||
|
</refmetainfo>
|
||
|
<refentrytitle>gluNurbsProperty</refentrytitle>
|
||
|
<manvolnum>3G</manvolnum>
|
||
|
</refmeta>
|
||
|
<refnamediv>
|
||
|
<refname>gluNurbsProperty</refname>
|
||
|
<refpurpose>set a NURBS property</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv><title>C Specification</title>
|
||
|
<funcsynopsis>
|
||
|
<funcprototype>
|
||
|
<funcdef>void <function>gluNurbsProperty</function></funcdef>
|
||
|
<paramdef>GLUnurbs* <parameter>nurb</parameter></paramdef>
|
||
|
<paramdef>GLenum <parameter>property</parameter></paramdef>
|
||
|
<paramdef>GLfloat <parameter>value</parameter></paramdef>
|
||
|
</funcprototype>
|
||
|
</funcsynopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<!-- eqn: ignoring delim $$ -->
|
||
|
<refsect1 id="parameters"><title>Parameters</title>
|
||
|
<variablelist>
|
||
|
<varlistentry>
|
||
|
<term><parameter>nurb</parameter></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Specifies the NURBS object (created with <citerefentry><refentrytitle>gluNewNurbsRenderer</refentrytitle></citerefentry>).
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><parameter>property</parameter></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Specifies the property to be set. Valid values are
|
||
|
<constant>GLU_SAMPLING_TOLERANCE</constant>,
|
||
|
<constant>GLU_DISPLAY_MODE</constant>,
|
||
|
<constant>GLU_CULLING</constant>,
|
||
|
<constant>GLU_AUTO_LOAD_MATRIX</constant>,
|
||
|
<constant>GLU_PARAMETRIC_TOLERANCE</constant>,
|
||
|
<constant>GLU_SAMPLING_METHOD</constant>,
|
||
|
<constant>GLU_U_STEP</constant>,
|
||
|
<constant>GLU_V_STEP</constant>, or
|
||
|
<constant>GLU_NURBS_MODE</constant>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><parameter>value</parameter></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Specifies the value of the indicated property.
|
||
|
It may be a numeric value or one of
|
||
|
<constant>GLU_OUTLINE_POLYGON</constant>,
|
||
|
<constant>GLU_FILL</constant>,
|
||
|
<constant>GLU_OUTLINE_PATCH</constant>,
|
||
|
<constant>GLU_TRUE</constant>,
|
||
|
<constant>GLU_FALSE</constant>,
|
||
|
<constant>GLU_PATH_LENGTH</constant>,
|
||
|
<constant>GLU_PARAMETRIC_ERROR</constant>,
|
||
|
<constant>GLU_DOMAIN_DISTANCE</constant>,
|
||
|
<constant>GLU_NURBS_RENDERER</constant>, or
|
||
|
<constant>GLU_NURBS_TESSELLATOR</constant>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
</variablelist>
|
||
|
</refsect1>
|
||
|
<refsect1 id="description"><title>Description</title>
|
||
|
<para>
|
||
|
<function>gluNurbsProperty</function> is used to control properties stored in a NURBS object. These
|
||
|
properties affect the way that a NURBS curve is rendered. The accepted
|
||
|
values for <parameter>property</parameter> are as follows:
|
||
|
</para>
|
||
|
<variablelist>
|
||
|
<varlistentry>
|
||
|
<term><constant>GLU_NURBS_MODE</constant></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
<parameter>value</parameter> should be set to be either <constant>GLU_NURBS_RENDERER</constant> or
|
||
|
<constant>GLU_NURBS_TESSELLATOR</constant>. When set to <constant>GLU_NURBS_RENDERER</constant>, NURBS objects
|
||
|
are tessellated into OpenGL primitives and sent to the pipeline for
|
||
|
rendering. When set to <constant>GLU_NURBS_TESSELLATOR</constant>, NURBS objects are
|
||
|
tessellated into OpenGL primitives but the vertices, normals, colors, and/or textures are
|
||
|
retrieved back through a callback interface (see <citerefentry><refentrytitle>gluNurbsCallback</refentrytitle></citerefentry>). This allows the user to cache the
|
||
|
tessellated results for further processing.
|
||
|
The initial value is <constant>GLU_NURBS_RENDERER</constant>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><constant>GLU_SAMPLING_METHOD</constant> </term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Specifies how a NURBS surface should be
|
||
|
tessellated.
|
||
|
<parameter>value</parameter> may be one of <constant>GLU_PATH_LENGTH</constant>,
|
||
|
<constant>GLU_PARAMETRIC_ERROR</constant>, <constant>GLU_DOMAIN_DISTANCE</constant>,
|
||
|
<constant>GLU_OBJECT_PATH_LENGTH</constant>, or
|
||
|
<constant>GLU_OBJECT_PARAMETRIC_ERROR</constant>.
|
||
|
When set to <constant>GLU_PATH_LENGTH</constant>, the surface is rendered so that
|
||
|
the maximum length, in
|
||
|
pixels, of the edges of the tessellation polygons is no greater than
|
||
|
what is specified by <constant>GLU_SAMPLING_TOLERANCE</constant>.
|
||
|
</para>
|
||
|
<para>
|
||
|
<constant>GLU_PARAMETRIC_ERROR</constant> specifies that the surface is rendered in such a
|
||
|
way that the value specified by <constant>GLU_PARAMETRIC_TOLERANCE</constant> describes the
|
||
|
maximum distance, in pixels, between the tessellation polygons and the
|
||
|
surfaces they approximate.
|
||
|
</para>
|
||
|
<para>
|
||
|
<constant>GLU_DOMAIN_DISTANCE</constant> allows users to specify, in parametric coordinates,
|
||
|
how many sample points per unit length are taken in <emphasis>u</emphasis>, <emphasis>v</emphasis>
|
||
|
direction.
|
||
|
</para>
|
||
|
<para>
|
||
|
<constant>GLU_OBJECT_PATH_LENGTH</constant> is similar to <constant>GLU_PATH_LENGTH</constant>
|
||
|
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>.
|
||
|
</para>
|
||
|
<para>
|
||
|
<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.
|
||
|
</para>
|
||
|
<para>
|
||
|
The initial value of <constant>GLU_SAMPLING_METHOD</constant> is <constant>GLU_PATH_LENGTH</constant>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><constant>GLU_SAMPLING_TOLERANCE</constant></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Specifies the maximum length, in pixels or in object space length unit,
|
||
|
to use when the sampling method is set to <constant>GLU_PATH_LENGTH</constant> or
|
||
|
<constant>GLU_OBJECT_PATH_LENGTH</constant>.
|
||
|
The NURBS code is conservative when rendering a curve
|
||
|
or surface, so the actual length can be somewhat shorter. The initial
|
||
|
value is 50.0 pixels.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><constant>GLU_PARAMETRIC_TOLERANCE</constant></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Specifies the maximum distance, in pixels or in object space length unit,
|
||
|
to use when the sampling method is <constant>GLU_PARAMETRIC_ERROR</constant> or
|
||
|
<constant>GLU_OBJECT_PARAMETRIC_ERROR</constant>.
|
||
|
The initial value is 0.5.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><constant>GLU_U_STEP</constant></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Specifies the number of sample points per unit length taken
|
||
|
along the <emphasis>u</emphasis> axis in parametric coordinates. It is needed when
|
||
|
<constant>GLU_SAMPLING_METHOD</constant> is set to <constant>GLU_DOMAIN_DISTANCE</constant>.
|
||
|
The initial value is 100.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><constant>GLU_V_STEP</constant></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Specifies the number of sample points per unit length taken
|
||
|
along the <emphasis>v</emphasis> axis in parametric coordinate. It is needed when
|
||
|
<constant>GLU_SAMPLING_METHOD</constant> is set to <constant>GLU_DOMAIN_DISTANCE</constant>. The initial
|
||
|
value is 100.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><constant>GLU_DISPLAY_MODE</constant></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
<parameter>value</parameter> can be set to
|
||
|
<constant>GLU_OUTLINE_POLYGON</constant>, <constant>GLU_FILL</constant>, or
|
||
|
<constant>GLU_OUTLINE_PATCH</constant>.
|
||
|
When <constant>GLU_NURBS_MODE</constant> is set to be <constant>GLU_NURBS_RENDERER</constant>,
|
||
|
<parameter>value</parameter> defines how a NURBS surface should be rendered.
|
||
|
When <parameter>value</parameter> is set to <constant>GLU_FILL</constant>, the surface is rendered as a
|
||
|
set of polygons. When <parameter>value</parameter> is set to
|
||
|
<constant>GLU_OUTLINE_POLYGON</constant>, the NURBS library draws only the outlines
|
||
|
of the polygons created by tessellation. When <parameter>value</parameter> is set to
|
||
|
<constant>GLU_OUTLINE_PATCH</constant> just the outlines of patches and trim
|
||
|
curves defined by the user are drawn.
|
||
|
</para>
|
||
|
<para>
|
||
|
When <constant>GLU_NURBS_MODE</constant> is set to be <constant>GLU_NURBS_TESSELLATOR</constant>,
|
||
|
<parameter>value</parameter> defines how a NURBS surface should be tessellated.
|
||
|
When <constant>GLU_DISPLAY_MODE</constant> is set to <constant>GLU_FILL</constant> or
|
||
|
<constant>GLU_OUTLINE_POLYGON</constant>,
|
||
|
the NURBS surface is tessellated into OpenGL triangle primitives that can be
|
||
|
retrieved back through callback functions. If <constant>GLU_DISPLAY_MODE</constant> is set to
|
||
|
<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.
|
||
|
</para>
|
||
|
<para>
|
||
|
The initial value is <constant>GLU_FILL</constant>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><constant>GLU_CULLING</constant></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
<parameter>value</parameter> is a boolean value that, when set to <constant>GLU_TRUE</constant>, indicates that
|
||
|
a NURBS curve should be discarded prior to tessellation if its control points
|
||
|
lie outside the current viewport. The initial value is <constant>GLU_FALSE</constant>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><constant>GLU_AUTO_LOAD_MATRIX</constant></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
<parameter>value</parameter> is a boolean value. When set to <constant>GLU_TRUE</constant>, the NURBS code
|
||
|
downloads the projection matrix, the modelview matrix, and the
|
||
|
viewport from the GL server to compute sampling and
|
||
|
culling
|
||
|
matrices for each NURBS curve that is rendered. Sampling and culling matrices
|
||
|
are required to determine the tessellation of a NURBS surface into line segments
|
||
|
or polygons and to cull a NURBS surface if it lies outside the viewport.
|
||
|
</para>
|
||
|
<para>
|
||
|
If this mode is set to <constant>GLU_FALSE</constant>, then the program needs
|
||
|
to provide a projection matrix, a modelview matrix, and a viewport
|
||
|
for the NURBS renderer to use to construct sampling and culling matrices.
|
||
|
This can be done with the <citerefentry><refentrytitle>gluLoadSamplingMatrices</refentrytitle></citerefentry> function.
|
||
|
This mode is initially set to <constant>GLU_TRUE</constant>.
|
||
|
Changing it from <constant>GLU_TRUE</constant> to <constant>GLU_FALSE</constant> does not affect
|
||
|
the sampling and culling matrices until
|
||
|
<citerefentry><refentrytitle>gluLoadSamplingMatrices</refentrytitle></citerefentry>
|
||
|
is called.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
</variablelist>
|
||
|
</refsect1>
|
||
|
<refsect1 id="notes"><title>Notes</title>
|
||
|
<para>
|
||
|
If <constant>GLU_AUTO_LOAD_MATRIX</constant> is true, sampling and culling may be
|
||
|
executed incorrectly if NURBS routines are compiled into a display list.
|
||
|
</para>
|
||
|
<para>
|
||
|
A <parameter>property</parameter> of
|
||
|
<constant>GLU_PARAMETRIC_TOLERANCE</constant>,
|
||
|
<constant>GLU_SAMPLING_METHOD</constant>,
|
||
|
<constant>GLU_U_STEP</constant>, or
|
||
|
<constant>GLU_V_STEP</constant>,
|
||
|
or a <parameter>value</parameter> of
|
||
|
<constant>GLU_PATH_LENGTH</constant>,
|
||
|
<constant>GLU_PARAMETRIC_ERROR</constant>,
|
||
|
<constant>GLU_DOMAIN_DISTANCE</constant>
|
||
|
are only available if the GLU version is 1.1 or greater. They are not
|
||
|
valid parameters in GLU 1.0.
|
||
|
</para>
|
||
|
<para>
|
||
|
<citerefentry><refentrytitle>gluGetString</refentrytitle></citerefentry> can
|
||
|
be used to determine the GLU version.
|
||
|
</para>
|
||
|
<para>
|
||
|
<constant>GLU_NURBS_MODE</constant> is only available if the GLU version is 1.3 or
|
||
|
greater.
|
||
|
</para>
|
||
|
<para>
|
||
|
The <constant>GLU_OBJECT_PATH_LENGTH</constant> and <constant>GLU_OBJECT_PARAMETRIC_ERROR</constant>
|
||
|
values for the <constant>GLU_SAMPLING_METHOD</constant> property are only available if
|
||
|
the GLU version is 1.3 or greater.
|
||
|
</para>
|
||
|
</refsect1>
|
||
|
<refsect1 id="seealso"><title>See Also</title>
|
||
|
<para>
|
||
|
<citerefentry><refentrytitle>gluGetNurbsProperty</refentrytitle></citerefentry>,
|
||
|
<citerefentry><refentrytitle>gluGetString</refentrytitle></citerefentry>,
|
||
|
<citerefentry><refentrytitle>gluLoadSamplingMatrices</refentrytitle></citerefentry>,
|
||
|
<citerefentry><refentrytitle>gluNewNurbsRenderer</refentrytitle></citerefentry>,
|
||
|
<citerefentry><refentrytitle>gluNurbsCallback</refentrytitle></citerefentry>
|
||
|
</para>
|
||
|
</refsect1>
|
||
|
<refsect1 id="Copyright"><title>Copyright</title>
|
||
|
<para>
|
||
|
Copyright <trademark class="copyright"></trademark> 1991-2006
|
||
|
Silicon Graphics, Inc. This document is licensed under the SGI
|
||
|
Free Software B License. For details, see
|
||
|
<ulink url="http://oss.sgi.com/projects/FreeB/">http://oss.sgi.com/projects/FreeB/</ulink>.
|
||
|
</para>
|
||
|
</refsect1>
|
||
|
</refentry>
|