gluBeginSurface
Prev | GLU | Next

## Name

gluBeginSurface, gluEndSurface — delimit a NURBS surface definition

## C Specification

`void `gluBeginSurface`` | `(` | `GLUnurbs* `nurb`);`
`void `gluEndSurface`` | `(` | `GLUnurbs* `nurb`);`

## Python Specification

``gluBeginSurface`` | `(` | ``nurb`) → `None``
``gluEndSurface`` | `(` | ``nurb`) → `None``

## 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 `GL_MAP2_VERTEX_3` or `GL_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`(`GL_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

Prev | Up | Next
gluBeginPolygon | Home | gluBeginTrim