gluTessVertex

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
GLUTESSVERTEX(3G)					    GLUTESSVERTEX(3G)



NAME
       gluTessVertex - specify a vertex on a polygon


C SPECIFICATION
       void gluTessVertex( GLUtesselator* tess,
			   GLdouble *location,
			   GLvoid* data )


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 fol-
       lows:

       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(3G),	  gluNewTess(3G),    gluTessBeginContour(3G),
       gluTessCallback(3G),	 gluTessProperty(3G),	   gluTessNormal(3G),
       gluTessEndPolygon(3G)





							    GLUTESSVERTEX(3G)