23 double *vertex_data[4],
34 for (i = 3; i < 6; i++)
54#define MAKE_GLU_CALLBACK(f) f
58#define MAKE_GLU_CALLBACK(f) ((void (*)(void))(f))
61static GLUtesselator*
Init(
void)
64 GLUtesselator* tobj = gluNewTess();
76 gluTessProperty(tobj, GLU_TESS_WINDING_RULE, winding_rule);
90 gluTessVertex(tobj, &d[x * 3], &d[x * 3]);
96 gluTessBeginPolygon(tobj,
NULL);
100 gluTessEndPolygon(tobj);
104 gluTessBeginContour(tobj);
108 gluTessEndContour(tobj);
Memory allocation wrappers that exit on failure.
static void * gv_calloc(size_t nmemb, size_t size)
static void Render_Contour2(GLUtesselator *tobj, sdot_op *p)
static void CALLBACK vertexCallback(void *vertex)
#define MAKE_GLU_CALLBACK(f)
static void Begin_Polygon(GLUtesselator *tobj)
static void Set_Winding_Rule(GLUtesselator *tobj, GLenum winding_rule)
static void End_Polygon(GLUtesselator *tobj)
void drawTessPolygon(sdot_op *p)
static void Begin_Contour(GLUtesselator *tobj)
static GLUtesselator * Init(void)
static void End_Contour(GLUtesselator *tobj)
static void CALLBACK combineCallback(double coords[3], double *vertex_data[4], float weight[4], double **dataOut)
parsing and deparsing of xdot operations