static void SpliceMergeVertices( TESStesselator *tess, TESShalfEdge *e1, TESShalfEdge *e2 ) /* * Two vertices with idential coordinates are combined into one. * e1->Org is kept, while e2->Org is discarded. */ { TESSreal weights[4] = { 0.5, 0.5, 0.0, 0.0 }; CallCombine( tess, e1->Org, weights, FALSE ); if ( !tessMeshSplice( tess->mesh, e1, e2 ) ) longjmp(tess->env,1); }
static void SpliceMergeVertices( GLUtesselator *tess, GLUhalfEdge *e1, GLUhalfEdge *e2 ) /* * Two vertices with idential coordinates are combined into one. * e1->Org is kept, while e2->Org is discarded. */ { void *data[4] = { NULL, NULL, NULL, NULL }; GLfloat weights[4] = { 0.5, 0.5, 0.0, 0.0 }; data[0] = e1->Org->data; data[1] = e2->Org->data; CallCombine( tess, e1->Org, data, weights, FALSE ); if ( !__gl_meshSplice( e1, e2 ) ) longjmp(tess->env,1); }
static void GetIntersectData( TESStesselator *tess, TESSvertex *isect, TESSvertex *orgUp, TESSvertex *dstUp, TESSvertex *orgLo, TESSvertex *dstLo ) /* * We've computed a new intersection point, now we need a "data" pointer * from the user so that we can refer to this new vertex in the * rendering callbacks. */ { TESSreal weights[4]; isect->coords[0] = isect->coords[1] = isect->coords[2] = 0; VertexWeights( isect, orgUp, dstUp, &weights[0] ); VertexWeights( isect, orgLo, dstLo, &weights[2] ); CallCombine( tess, isect, weights, TRUE ); }
static void GetIntersectData( GLUtesselator *tess, GLUvertex *isect, GLUvertex *orgUp, GLUvertex *dstUp, GLUvertex *orgLo, GLUvertex *dstLo ) /* * We've computed a new intersection point, now we need a "data" pointer * from the user so that we can refer to this new vertex in the * rendering callbacks. */ { void *data[4]; GLfloat weights[4]; data[0] = orgUp->data; data[1] = dstUp->data; data[2] = orgLo->data; data[3] = dstLo->data; isect->coords[0] = isect->coords[1] = isect->coords[2] = 0; VertexWeights( isect, orgUp, dstUp, &weights[0] ); VertexWeights( isect, orgLo, dstLo, &weights[2] ); CallCombine( tess, isect, data, weights, TRUE ); }