diff options
Diffstat (limited to 'doc/gl-docs/GLU/tessvertex.3gl')
-rw-r--r-- | doc/gl-docs/GLU/tessvertex.3gl | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/doc/gl-docs/GLU/tessvertex.3gl b/doc/gl-docs/GLU/tessvertex.3gl new file mode 100644 index 000000000..dcfce2801 --- /dev/null +++ b/doc/gl-docs/GLU/tessvertex.3gl @@ -0,0 +1,99 @@ +'\" 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 + + |