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(); } } }
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(); } } }
public GLVector3d GetTransformedVertex( ExtrusionPath extrusionpath, int iPathSliceIndex, int iPointIndex ) { return extrusionpath.GetTransformedVertex( points[iPointIndex], iPathSliceIndex ); }
public GLVector3d GetTransformedVertex(ExtrusionPath extrusionpath, int iPathSliceIndex, int iPointIndex) { return(extrusionpath.GetTransformedVertex(points[iPointIndex], iPathSliceIndex)); }