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); }
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!"); }