---
name: "gluBeginCurve"
section: "3x"
platform: "linux"
package: "xlibmesa-glu-dev"
version: "4.3.0.dfsg.1-14sarge7"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/gluBeginCurve"
---

# gluBeginCurve(3x)

delimit a NURBS curve definition

## NAME

**gluBeginCurve, gluEndCurve** - delimit a NURBS curve definition

## C SPECIFICATION

void **gluBeginCurve**( GLUnurbs\* *nurb* )

```

```

void **gluEndCurve**( GLUnurbs\* *nurb* )

```

```

delim $$

## PARAMETERS

- *nurb*

  Specifies the NURBS object (created with **gluNewNurbsRenderer**).

## DESCRIPTION

Use **gluBeginCurve** to mark the beginning of a NURBS  curve definition. After  calling **gluBeginCurve**, make one or more calls to **gluNurbsCurve** to define the attributes of the curve. Exactly one of the calls to **gluNurbsCurve** must have a curve type of **GL\_MAP1\_VERTEX\_3** or **GL\_MAP1\_VERTEX\_4**. To mark the end of the NURBS curve definition, call **gluEndCurve**.

GL evaluators are used to render the NURBS curve as a series of line segments. 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 curve with normals; texture coordinates and normals are also specified as NURBS curves:

gluBeginCurve(nobj);\
    gluNurbsCurve(nobj, ..., GL\_MAP1\_TEXTURE\_COORD\_2);\
    gluNurbsCurve(nobj, ..., GL\_MAP1\_NORMAL);\
    gluNurbsCurve(nobj, ..., GL\_MAP1\_VERTEX\_4); gluEndCurve(nobj);

## SEE ALSO

**gluBeginSurface(3G)**, **gluBeginTrim(3G)**, **gluNewNurbsRenderer(3G)**,  **gluNurbsCurve(3G)**,  **glPopAttrib(3G)**, **glPushAttrib(3G)**
