1991-2006
Silicon Graphics, Inc.
gluBeginSurface
3G

# gluBeginSurface

delimit a NURBS surface definition

## C Specification

                    void gluBeginSurface
                    GLUnurbs* nurb

## C Specification

                    void gluEndSurface
                    GLUnurbs* nurb

## Parameters

`nurb`

  Specifies the NURBS object (created with gluNewNurbsRenderer).

## Description

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 `GLU_MAP2_VERTEX_3` or `GLU_MAP2_VERTEX_4`. To mark the end of the NURBS surface definition, call gluEndSurface.

Trimming of NURBS surfaces is supported with gluBeginTrim, gluPwlCurve, gluNurbsCurve, and gluEndTrim. See the gluBeginTrim reference page for details.

GL evaluators are used to render the NURBS surface as a set of polygons. Evaluator state is preserved during rendering with glPushAttrib(`GLU_EVAL_BIT`) and glPopAttrib. See the glPushAttrib reference page for details on exactly what state these calls preserve.

## Example

The following commands render a textured NURBS surface with normals; the texture coordinates and normals are also described as NURBS surfaces:

    gluBeginSurface(nobj);
       gluNurbsSurface(nobj, ..., GL_MAP2_TEXTURE_COORD_2);
       gluNurbsSurface(nobj, ..., GL_MAP2_NORMAL);
       gluNurbsSurface(nobj, ..., GL_MAP2_VERTEX_4);
    gluEndSurface(nobj);

## See Also

gluBeginCurve, gluBeginTrim, gluNewNurbsRenderer, gluNurbsCurve, gluNurbsSurface, gluPwlCurve, glPushAttrib

## Copyright

Copyright 1991-2006 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, see http://oss.sgi.com/projects/FreeB/.