/// <summary> /// Creates a 2D texture from the image /// </summary> /// <returns></returns> public RendererManaged.Texture2D CreateTexture2D( RendererManaged.Device _Device ) { if ( m_Opts.m_type != ImageOptions.TYPE.TT_2D ) throw new Exception( "The image is not a 2D texture!" ); RendererManaged.PIXEL_FORMAT TextureFormat = m_Opts.m_format.EquivalentRendererFormat; uint ArraySize = 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, (int) m_Opts.m_arraySize, (int) m_Opts.m_curNumLevels, TextureFormat, false, false, Content.ToArray() ); return Result; }
public RendererManaged.Texture3D CreateTexture3D( RendererManaged.Device _Device ) { if ( m_Opts.m_type != ImageOptions.TYPE.TT_3D ) throw new Exception( "The image is not a 2D texture!" ); throw new Exception( "Texture 3D are not supported yet!" ); }