Exemplo n.º 1
0
        private static void FillTriangle(float VoxelSizeX, float VoxelSizeY, int ISX, int ISY, int MX, int MY, float ScaleX, float ScaleY, Vector2 P1, Vector2 P2, Vector2 P3, LockBitMap ShadeMap, LockBitMap TextureLookup)
        {
            int MaxX = (int)Math.Max(P1.X, Math.Max(P2.X, P3.X));
            int MaxY = (int)Math.Max(P1.Y, Math.Max(P2.Y, P3.Y));
            int MinX = (int)Math.Min(P1.X, Math.Min(P2.X, P3.X));
            int MinY = (int)Math.Min(P1.Y, Math.Min(P2.Y, P3.Y));

            Vector2 Pos = new Vector2();

            for (int i = MinX; i <= MaxX; i++)
            {
                for (int j = MinY; j <= MaxY; j++)
                {
                    Pos.X = i;
                    Pos.Y = j;

                    int TX = (int)((i % VoxelSizeX) / VoxelSizeX * ISX);
                    int TY = (int)((j % VoxelSizeY) / VoxelSizeY * ISY);

                    if (CollisionUtil.InsideTriangle(Pos, P1, P2, P3))
                    {
                        ShadeMap.SetPixel(i, j, TextureLookup.GetPixel(TX + MX * ISX, TY + ISY * MY));
                    }
                }
            }
        }