Not all are required. You need to define at least the BEGIN, VERTEX and END callbacks (or the _DATA variants). I’m not certain, but I don’t think that the COMBINE callback will be invoked unless the polygon self-intersects.
GLU deals with primitive generation. The callbacks deal with vertices. In the simplest case (no texture coordinates, colours or normals), you can just use
If vertices have other attributes, you need to use the GLU_TESS_VERTEX_DATA callback instead, and call the relevant functions (glColor, glNormal, etc). The COMBINE callback (if defined) needs to interpolate all of the attributes.
Rather than re-tessellating the polygon each frame, it’s preferable to tessellate polygons once and store the resulting triangles, either in a display list or a user-defined data structure.
Thank you very much for your quick and kind answer to my question.
I followed your tips and was successful in proceeding further.
But I cannot understand what I did wrong with a simple example below.
A case of a square with an inside circular hole. The square is defined by 4 corner points, and the circle by a polygon with 100 points. (numSquarePoint=4, numCirclePoint=100)