123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- '\" e
- '\"! eqn | mmdoc
- '\"macro stdmacro
- .ds Vn Version 1.2
- .ds Dt 6 March 1997
- .ds Re Release 1.2.0
- .ds Dp May 02 11:53
- .ds Dm 37 tessverte
- .ds Xs 55990 5 tessvertex.gl
- .TH GLUTESSVERTEX 3G
- .SH NAME
- .B "gluTessVertex
- \- specify a vertex on a polygon
- .SH C SPECIFICATION
- void \f3gluTessVertex\fP(
- GLUtesselator* \fItess\fP,
- .nf
- .ta \w'\f3void \fPgluTessVertex( 'u
- GLdouble \fI*location\fP,
- GLvoid* \fIdata\fP )
- .fi
- .EQ
- delim $$
- .EN
- .SH PARAMETERS
- .TP \w'\fIlocation\fP\ \ 'u
- \f2tess\fP
- Specifies the tessellation object (created with \%\f3gluNewTess\fP).
- .TP
- \f2location\fP
- Specifies the location of the vertex.
- .TP
- \f2data\fP
- Specifies an opaque pointer passed back to the program with the vertex callback
- (as specified by \%\f3gluTessCallback\fP).
- .SH DESCRIPTION
- \%\f3gluTessVertex\fP describes a vertex on a polygon that the program defines. Successive
- \%\f3gluTessVertex\fP calls describe a closed contour. For example,
- to describe a quadrilateral \%\f3gluTessVertex\fP should be called four times.
- \%\f3gluTessVertex\fP can only be called between \%\f3gluTessBeginContour\fP and
- \%\f3gluTessEndContour\fP.
- .P
- \f2data\fP 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 \%\f3GLU_TESS_VERTEX\fP
- or \%\f3GLU_TESS_VERTEX_DATA\fP callback after tessellation
- (see the \%\f3gluTessCallback\fP reference page).
- .SH EXAMPLE
- A quadrilateral with a triangular hole in it can be described as follows:
- .sp
- .Ex
- 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);
- .Ee
- .sp
- .SH NOTES
- It is a common error to use a local variable for \f2location\fP or \f2data\fP and store
- values into it as part of a loop.
- For example:
- .Ex
- 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);
- }
- .Ee
- .P
- This doesn't work.
- Because the pointers specified by \f2location\fP and \f2data\fP might not be
- dereferenced until \%\f3gluTessEndPolygon\fP is executed,
- all the vertex coordinates but the very last set could be overwritten
- before tessellation begins.
- .P
- Two common symptoms of this problem are consists of a single point
- (when a local variable is used for \f2data\fP) and a
- \%\f3GLU_TESS_NEED_COMBINE_CALLBACK\fP error (when a local variable is
- used for \f2location\fP).
- .SH SEE ALSO
- \%\f3gluTessBeginPolygon(3G)\fP, \%\f3gluNewTess(3G)\fP, \%\f3gluTessBeginContour(3G)\fP,
- \%\f3gluTessCallback(3G)\fP,
- \%\f3gluTessProperty(3G)\fP, \%\f3gluTessNormal(3G)\fP,
- \%\f3gluTessEndPolygon(3G)\fP
|