OpenGL man pages
gluBeginSurface, gluEndSurface - delimit a NURBS surface definition
void gluBeginSurface( GLUnurbsObj *nobj )
void gluEndSurface( GLUnurbsObj *nobj )
nobj Specifies the NURBS object (created with gluNewNurbsRenderer).
Use gluBeginSurface to mark the beginning of a NURBS surface definition.
After calling gluBeginSurface, make one or more calls to gluNurbsSurface to
define the attributes of the surface. Exactly one of these calls to
gluNurbsSurface must have a surface type of GL_MAP2_VERTEX_3 or
GL_MAP2_VERTEX_4. To mark the end of the NURBS surface definition, call
Trimming of NURBS surfaces is supported with gluBeginTrim, gluPwlCurve,
gluNurbsCurve, and gluEndTrim. Refer to the gluBeginTrim reference page
OpenGL evaluators are used to render the NURBS surface as a set of
polygons. Evaluator state is preserved during rendering with
glPushAttrib(GL_EVAL_BIT) and glPopAttrib(). See the glPushAttrib reference
page for details on exactly what state these calls preserve.
The following commands render a textured NURBS surface with normals; the
texture coordinates and normals are also described as NURBS surfaces:
gluNurbsSurface(nobj, ..., GL_MAP2_TEXTURE_COORD_2);
gluNurbsSurface(nobj, ..., GL_MAP2_NORMAL);
gluNurbsSurface(nobj, ..., GL_MAP2_VERTEX_4); gluEndSurface(nobj);
gluBeginCurve, gluBeginTrim, gluNewNurbsRenderer, gluNurbsCurve,
Fri Dec 6 11:18:03 EST 1996
Look here for legal stuff: Legal