Exemple #1
0
        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();
                }
            }
        }
Exemple #2
0
        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();
                }
            }
        }
Exemple #3
0
 public GLVector3d GetTransformedVertex( ExtrusionPath extrusionpath, int iPathSliceIndex, int iPointIndex )
 {
     return extrusionpath.GetTransformedVertex( points[iPointIndex], iPathSliceIndex );
 }
Exemple #4
0
 public GLVector3d GetTransformedVertex(ExtrusionPath extrusionpath, int iPathSliceIndex, int iPointIndex)
 {
     return(extrusionpath.GetTransformedVertex(points[iPointIndex], iPathSliceIndex));
 }