Ejemplo n.º 1
0
 public static void Fill( SimpleImage image, Rectangle rect, byte r, byte g, byte b, byte a )
 {
     for( int y = rect.Top; y < rect.Bottom; ++y )
     for( int x = rect.Left; x < rect.Right; ++x )
     {
         image.Data[image.Channels*(y*image.Width+x)+0] = r;
         image.Data[image.Channels*(y*image.Width+x)+1] = g;
         image.Data[image.Channels*(y*image.Width+x)+2] = b;
         image.Data[image.Channels*(y*image.Width+x)+3] = a;
     }
 }
Ejemplo n.º 2
0
        public static void Copy(SimpleImage dest, Point dest_offset, SimpleImage src, Rectangle src_rect)
        {
            int width = System.Math.Min(dest.Width - dest_offset.X, src_rect.Width);
            int height = System.Math.Min(dest.Height - dest_offset.Y, src_rect.Height);
            int channels = System.Math.Min(dest.Channels, src.Channels);

            for (int j = 0; j < height; ++j)
                for (int i = 0; i < width; ++i)
                {
                    int i1 = ((j + dest_offset.Y) * dest.Width + (i + dest_offset.X)) * dest.Channels;
                    int i2 = ((j + src_rect.Y) * src.Width + (i + src_rect.X)) * src.Channels;

                    for (int c = 0; c < channels; ++c)
                        dest.Data[i1 + c] = src.Data[i2 + c];
                }
        }
Ejemplo n.º 3
0
        void SetupDataAndInfo()
        {
            int PageTableSizeLog2 = MathExtensions.Log2(info.PageTableSize);

            tabledata = new SlimDX.DataBox[PageTableSizeLog2+1];
            regions = new D3D10.ResourceRegion[PageTableSizeLog2+1];
            data = new SimpleImage[PageTableSizeLog2+1];

            for( int i = 0; i < PageTableSizeLog2+1; ++i )
            {
                int size = info.PageTableSize >> i;
                SlimDX.DataStream stream = new SlimDX.DataStream( size * size * VirtualTexture.ChannelCount, false, true );
                tabledata[i] = new SlimDX.DataBox( size * VirtualTexture.ChannelCount, size * size * VirtualTexture.ChannelCount, stream );

                D3D10.ResourceRegion region = new D3D10.ResourceRegion();
                region.Left = 0;	region.Right  = size;
                region.Top  = 0;	region.Bottom = size;
                region.Front = 0;	region.Back   = 1;
                regions[i] = region;

                data[i] = new SimpleImage( size, size, VirtualTexture.ChannelCount );
            }
        }
Ejemplo n.º 4
0
        static void Write( Quadtree node, SimpleImage image, int miplevel )
        {
            if( node.Level >= miplevel )
            {
                int rx = node.Rectangle.X >> miplevel;
                int ry = node.Rectangle.Y >> miplevel;
                int rw = node.Rectangle.Width >> miplevel;
                int rh = node.Rectangle.Height >> miplevel;

                SimpleImage.Fill( image, new Rectangle( rx, ry, rw, rh ), (byte)node.Mapping.X, (byte)node.Mapping.Y, (byte)node.Level, 255 );

                foreach( Quadtree child in node.Children )
                    if( child != null )
                        Quadtree.Write( child, image, miplevel );
            }
        }
Ejemplo n.º 5
0
 public void Write( SimpleImage image, int miplevel )
 {
     Quadtree.Write( this, image, miplevel );
 }