public void Render(ExtrusionPath extrusionpath) { for (int i = 0; i < extrusionpath.NumberOfTransforms - 1; i++) { for (int j = 0; j < iNumPoints - 1; j++) { // p1 - p4 are the quad we are rendering GLVector3d p1 = extrusionpath.GetTransformedVertex(points[j], i); GLVector3d p2 = extrusionpath.GetTransformedVertex(points[j + 1], i); GLVector3d p3 = extrusionpath.GetTransformedVertex(points[j + 1], i + 1); GLVector3d p4 = extrusionpath.GetTransformedVertex(points[j], i + 1); Vector2 t1 = texturemapping.GetTextureCoordinate(new Vector2((double)j / (iNumPoints - 1), (double)i / (extrusionpath.NumberOfTransforms - 1))); Vector2 t2 = texturemapping.GetTextureCoordinate(new Vector2((double)(j + 1) / (iNumPoints - 1), (double)i / (extrusionpath.NumberOfTransforms - 1))); Vector2 t3 = texturemapping.GetTextureCoordinate(new Vector2((double)(j + 1) / (iNumPoints - 1), (double)(i + 1) / (extrusionpath.NumberOfTransforms - 1))); Vector2 t4 = texturemapping.GetTextureCoordinate(new Vector2((double)j / (iNumPoints - 1), (double)(i + 1) / (extrusionpath.NumberOfTransforms - 1))); GLVector3d normal = CalculateNormal(p1, p2, p3, p4); renderer.SetNormal(normal.x, normal.y, normal.z); renderer.StartTriangle(); renderer.SetTextureCoord(t1.x, t1.y); renderer.AddVertex(p1.x, p1.y, p1.z); renderer.SetTextureCoord(t2.x, t2.y); renderer.AddVertex(p2.x, p2.y, p2.z); renderer.SetTextureCoord(t3.x, t3.y); renderer.AddVertex(p3.x, p3.y, p3.z); renderer.EndTriangle(); renderer.StartTriangle(); renderer.SetTextureCoord(t1.x, t1.y); renderer.AddVertex(p1.x, p1.y, p1.z); renderer.SetTextureCoord(t3.x, t3.y); renderer.AddVertex(p3.x, p3.y, p3.z); renderer.SetTextureCoord(t4.x, t4.y); renderer.AddVertex(p4.x, p4.y, p4.z); renderer.EndTriangle(); } } }