Example #1
0
        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);
        }
Example #2
0
        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!");
        }