gluNurbsProperty()gluNurbsProperty()NAMEgluNurbsProperty - set a NURBS property
GLfloat value );
Specifies the NURBS object (created with gluNewNurbsRenderer()). Spec‐
ifies the property to be set. Valid values are GLU_SAMPLING_TOLERANCE,
GLU_DISPLAY_MODE, GLU_CULLING, GLU_AUTO_LOAD_MATRIX, GLU_PARAMET‐
RIC_TOLERANCE, GLU_SAMPLING_METHOD, GLU_U_STEP, GLU_V_STEP, or
GLU_NURBS_MODE_EXT. Specifies the value of the indicated property. It
may be a numeric value, or one of GLU_OUTLINE_POLYGON, GLU_FILL,
GLU_OUTLINE_PATCH, GL_TRUE, GL_FALSE, GLU_PATH_LENGTH, GLU_PARAMET‐
RIC_ERROR, GLU_DOMAIN_DISTANCE, GLU_NURBS_RENDERER_EXT, or
DESCRIPTIONgluNurbsProperty() 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 property are as follows: value should be set to
be either GLU_NURBS_RENDERER_EXT or GLU_NURBS_TESSELLATOR_EXT. When set
to GLU_NURBS_RENDERER_EXT, NURBS objects are tessellated into openGL
primitives and sent to the pipeline for rendering. When set to
GLU_NURBS_TESSELLATOR_EXT, NURBS objects are tessellated into openGL
primitives but the vertices, normals, colors, and/or textures are
retrieved back through a callback interface (see gluNurbsCallback()).
This allows the user to cache the tessellated results for further pro‐
cessing. Specifies how a NURBS surface should be tessellated. value
may be one of GLU_PATH_LENGTH, GLU_PARAMETRIC_ERROR, GLU_DOMAIN_DIS‐
TANCE, GLU_OBJECT_PATH_LENGTH_EXT, or GLU_OBJECT_PARAMETRIC_ERROR_EXT.
When set to GLU_PATH_LENGTH, the surface is rendered so that the maxi‐
mum length, in pixels, of the edges of the tessellation polygons is no
greater than what is specified by GLU_SAMPLING_TOLERANCE.
GLU_PARAMETRIC_ERROR specifies that the surface is rendered in
such a way that the value specified by GLU_PARAMETRIC_TOLERANCE
describes the maximum distance, in pixels, between the tessella‐
tion polygons and the surfaces they approximate.
GLU_DOMAIN_DISTANCE allows users to specify, in parametric coor‐
dinates, how many sample points per unit length are taken in u,
GLU_OBJECT_PATH_LENGTH_EXT is similar to GLU_PATH_LENGTH except
that it is view independent, that is, the surface is rendered so
that the maximum length, in object space, of edges of the tes‐
sellation polygons is no greater than what is specified by
GLU_OBJECT_PARAMETRIC_ERROR_EXT is similar to GLU_PARAMET‐
RIC_ERROR except that it is view independent, that is, the sur‐
face is rendered in such a way that the value specified by
GLU_PARAMETRIC_TOLERANCE describes the maximum distance, in
object space, between the tessellation polygons and the surfaces
The initial value of GLU_SAMPLING_METHOD is GLU_PATH_LENGTH.
Specifies the maximum length, in pixels or in object space
length unit, to use when the sampling method is set to
GLU_PATH_LENGTH or GLU_OBJECT_PATH_LENGTH_EXT. 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 pix‐
els. Specifies the maximum distance, in pixels or in object
space length unit, to use when the sampling method is GLU_PARA‐
METRIC_ERROR or GLU_OBJECT_PARAMETRIC_ERROR_EXT. The initial
value is 0.5. Specifies the number of sample points per unit
length taken along the u axis in parametric coordinates. It is
needed when GLU_SAMPLING_METHOD is set to GLU_DOMAIN_DISTANCE.
The initial value is 100. Specifies the number of sample points
per unit length taken along the v axis in parametric coordinate.
It is needed when GLU_SAMPLING_METHOD is set to GLU_DOMAIN_DIS‐
TANCE. The initial value is 100. value can be set to GLU_OUT‐
LINE_POLYGON, GLU_FILL, or GLU_OUTLINE_PATCH. When
GLU_NURBS_MODE_EXT is set to be GLU_NURBS_RENDERER_EXT, value
defines how a NURBS surface should be rendered. When value is
set to GLU_FILL, the surface is rendered as a set of polygons.
When value is set to GLU_OUTLINE_POLYGON, the NURBS library
draws only the outlines of the polygons created by tessellation.
When value is set to GLU_OUTLINE_PATCH just the outlines of
patches and trim curves defined by the user are drawn.
When GLU_NURBS_MODE_EXT is set to be GLU_NURBS_TESSELLATOR_EXT,
value defines how a NURBS surface should be tessellated. When
GLU_DISPLAY_MODE is set to GLU_FILL or GLU_OUTLINE_POLY, the
NURBS surface is tessellated into openGL triangle primitives
which can be retrieved back through callback functions. If
GLU_DISPLAY_MODE is set to GLU_OUTLINE_PATCH, only the outlines
of the patches and trim curves are generated as a sequence of
line strips which can be retrieved back through callback func‐
The initial value is GLU_FILL. value is a boolean value that,
when set to GL_TRUE, indicates that a NURBS curve should be dis‐
carded prior to tessellation if its control points lie outside
the current viewport. The initial value is GL_FALSE. value is a
boolean value. When set to GL_TRUE, 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.
If this mode is set to GL_FALSE, then the program needs to pro‐
vide 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 gluLoadSamplingMatrices()
function. This mode is initially set to GL_TRUE. Changing it
from GL_TRUE to GL_FALSE does not affect the sampling and
culling matrices until gluLoadSamplingMatrices() is called.
If GLU_AUTO_LOAD_MATRIX is true, sampling and culling may be executed
incorrectly if NURBS routines are compiled into a display list.
A property of GLU_PARAMETRIC_TOLERANCE, GLU_SAMPLING_METHOD,
GLU_U_STEP, or GLU_V_STEP, or a value of GLU_PATH_LENGTH, GLU_PARAMET‐
RIC_ERROR, GLU_DOMAIN_DISTANCE are only available if the GLU version is
1.1 or greater. They are not valid parameters in GLU 1.0.
gluGetString() can be used to determine the GLU version.
SEE ALSOgluGetNurbsProperty(3), gluLoadSamplingMatrices(3), gluNewNurbsRen‐
derer(3), gluGetString(3), gluNurbsCallback(3)gluNurbsProperty()