gluTessVertex
Prev | GLU | Next

## Name

gluTessVertex — specify a vertex on a polygon

## C Specification

`void `gluTessVertex`` | `(` | `GLUtesselator* `tess`, GLdouble *`location`, GLvoid* `data`);`

## Python Specification

``gluTessVertex`` | `(` | ``tess`, `location`, `data`) → `None``

## Parameters

`tess`
  Specifies the tessellation object (created with `gluNewTess`).
`location`
  Specifies the location of the vertex.
`data`
  Specifies an opaque pointer passed back to the program with the vertex callback (as specified by `gluTessCallback`).

## Description

`gluTessVertex` describes a vertex on a polygon that the program defines. Successive `gluTessVertex` calls describe a closed contour. For example, to describe a quadrilateral `gluTessVertex` should be called four times. `gluTessVertex` can only be called between `gluTessBeginContour` and `gluTessEndContour`.

`data` normally points to a structure containing the vertex location, as well as other per-vertex attributes such as color and normal. This pointer is passed back to the user through the `GLU_TESS_VERTEX` or `GLU_TESS_VERTEX_DATA` callback after tessellation (see the `gluTessCallback` reference page).

## Example

A quadrilateral with a triangular hole in it can be described as follows: gluTessBeginPolygon(tobj, `NULL`); gluTessBeginContour(tobj); gluTessVertex(tobj, v1, v1); gluTessVertex(tobj, v2, v2); gluTessVertex(tobj, v3, v3); gluTessVertex(tobj, v4, v4); gluTessEndContour(tobj); gluTessBeginContour(tobj); gluTessVertex(tobj, v5, v5); gluTessVertex(tobj, v6, v6); gluTessVertex(tobj, v7, v7); gluTessEndContour(tobj); gluTessEndPolygon(tobj);

## Notes

It is a common error to use a local variable for `location` or `data` and store values into it as part of a loop. For example: for (i = 0; i < NVERTICES; ++i) { GLdouble data[3]; data[0] = vertex[i][0]; data[1] = vertex[i][1]; data[2] = vertex[i][2]; gluTessVertex(tobj, data, data); }

This doesn't work. Because the pointers specified by `location` and `data` might not be dereferenced until `gluTessEndPolygon` is executed, all the vertex coordinates but the very last set could be overwritten before tessellation begins.

Two common symptoms of this problem are consists of a single point (when a local variable is used for `data`) and a `GLU_TESS_NEED_COMBINE_CALLBACK` error (when a local variable is used for `location`).

## See Also

gluTessBeginPolygon, gluNewTess, gluTessBeginContour, gluTessCallback, gluTessProperty, gluTessNormal, gluTessEndPolygon

Prev | Up | Next
gluTessProperty | Home | gluUnProject