public RendererManaged.Texture2D CreateTextureCube( RendererManaged.Device _Device )
{
if ( m_Opts.m_type != ImageOptions.TYPE.TT_CUBIC )
throw new Exception( "The image is not a cube map texture!" );
RendererManaged.PIXEL_FORMAT TextureFormat = m_Opts.m_format.EquivalentRendererFormat;
uint ArraySize = 6 * m_Opts.m_arraySize;
uint MipsCount = m_Opts.m_curNumLevels;
uint PixelSize = m_Opts.m_format.BitsCount >> 3;
List<RendererManaged.PixelsBuffer> Content = new List<RendererManaged.PixelsBuffer>();
for ( uint SliceIndex=0; SliceIndex < ArraySize; SliceIndex++ ) {
for ( uint MipLevelIndex=0; MipLevelIndex < MipsCount; MipLevelIndex++ ) {
ImageSlice Slice = m_Slices[MipLevelIndex*ArraySize+SliceIndex]; // Stupidly stored in reverse order!
RendererManaged.PixelsBuffer Pixels = new RendererManaged.PixelsBuffer( (int) (Slice.m_Width * Slice.m_Height * PixelSize) );
Content.Add( Pixels );
using ( BinaryWriter Writer = Pixels.OpenStreamWrite() )
Writer.Write( Slice.m_Content );
}
}
RendererManaged.Texture2D Result = new RendererManaged.Texture2D( _Device, (int) m_Opts.m_curWidth, (int) m_Opts.m_curHeight, -6 * (int) m_Opts.m_arraySize, (int) m_Opts.m_curNumLevels, TextureFormat, false, false, Content.ToArray() );
return Result;
}