| var tessy = (function initTesselator() { | |
| // function called for each vertex of tesselator output | |
| function vertexCallback(data, polyVertArray) { | |
| // console.log(data[0], data[1]); | |
| polyVertArray[polyVertArray.length] = data[0]; | |
| polyVertArray[polyVertArray.length] = data[1]; | |
| } | |
| function begincallback(type) { | |
| if (type !== libtess.primitiveType.GL_TRIANGLES) { | |
| console.log('expected TRIANGLES but got type: ' + type); | |
| } | |
| } | |
| function errorcallback(errno) { | |
| console.log('error callback'); | |
| console.log('error number: ' + errno); | |
| } | |
| // callback for when segments intersect and must be split | |
| function combinecallback(coords, data, weight) { | |
| // console.log('combine callback'); | |
| return [coords[0], coords[1], coords[2]]; | |
| } | |
| function edgeCallback(flag) { | |
| // don't really care about the flag, but need no-strip/no-fan behavior | |
| // console.log('edge flag: ' + flag); | |
| } | |
| var tessy = new libtess.GluTesselator(); | |
| // tessy.gluTessProperty(libtess.gluEnum.GLU_TESS_WINDING_RULE, libtess.windingRule.GLU_TESS_WINDING_POSITIVE); | |
| tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_VERTEX_DATA, vertexCallback); | |
| tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_BEGIN, begincallback); | |
| tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_ERROR, errorcallback); | |
| tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_COMBINE, combinecallback); | |
| tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_EDGE_FLAG, edgeCallback); | |
| return tessy; | |
| })(); |