public Texture2D Pipi2Texture( System.IO.FileInfo _FileName ) {
using ( System.IO.FileStream S = _FileName.OpenRead() )
using ( System.IO.BinaryReader R = new System.IO.BinaryReader( S ) ) {
int MipLevels = R.ReadInt32();
PixelsBuffer[] Mips = new PixelsBuffer[MipLevels];
int ImageWidth = 0, ImageHeight = 0;
for ( int MipLevel=0; MipLevel < MipLevels; MipLevel++ ) {
int W, H;
W = R.ReadInt32();
H = R.ReadInt32();
if ( MipLevel == 0 ) {
ImageWidth = W;
ImageHeight = H;
}
PixelsBuffer Buff = new PixelsBuffer( (uint) (4 * W * H * 4) );
Mips[MipLevel] = Buff;
using ( System.IO.BinaryWriter Wr = Buff.OpenStreamWrite() )
{
float4 C = new float4();
for ( int Y=0; Y < H; Y++ ) {
for ( int X=0; X < W; X++ ) {
C.x = R.ReadSingle();
C.y = R.ReadSingle();
C.z = R.ReadSingle();
C.w = R.ReadSingle();
Wr.Write( C.x );
Wr.Write( C.y );
Wr.Write( C.z );
Wr.Write( C.w );
}
}
}
}
return Image2Texture( (uint) ImageWidth, (uint) ImageHeight, PIXEL_FORMAT.RGBA32_FLOAT, Mips );
}
}