public static VectorMesh TriangulateShape(Shape shape) { P2T.CreateContext(TriangulationAlgorithm.DTSweep); var vertexBufferGenerator = new BufferGenerator(); var indexBufferGenerator = new BufferGenerator(); int indexCount = 0; foreach(var path in shape.Paths) { AddPathToBuffers(path, vertexBufferGenerator, indexBufferGenerator, ref indexCount); } var vertexBuffer = BufferFactory.Allocate(BufferTarget.ArrayBuffer, BufferUsageHint.StaticDraw, vertexBufferGenerator.GetBuffer()); var indexBuffer = BufferFactory.Allocate(BufferTarget.ElementArrayBuffer, BufferUsageHint.StaticDraw, indexBufferGenerator.GetBuffer()); return new VectorMesh(vertexBuffer, indexBuffer, indexCount); }