public void DecompressMipmap(TexMipmap mipmap)
        {
            if (mipmap.IsLZ4Compressed)
            {
                mipmap.Bytes           = Lz4Decompress(mipmap.Bytes, mipmap.PixelCount);
                mipmap.IsLZ4Compressed = false;
            }

            if (mipmap.Format.IsImage())
            {
                return;
            }

            switch (mipmap.Format)
            {
            case MipmapFormat.CompressedDXT5:
                mipmap.Bytes  = DXT.DecompressImage(mipmap.Width, mipmap.Height, mipmap.Bytes, DXT.DXTFlags.DXT5);
                mipmap.Format = MipmapFormat.RGBA8888;
                break;

            case MipmapFormat.CompressedDXT3:
                mipmap.Bytes  = DXT.DecompressImage(mipmap.Width, mipmap.Height, mipmap.Bytes, DXT.DXTFlags.DXT3);
                mipmap.Format = MipmapFormat.RGBA8888;
                break;

            case MipmapFormat.CompressedDXT1:
                mipmap.Bytes  = DXT.DecompressImage(mipmap.Width, mipmap.Height, mipmap.Bytes, DXT.DXTFlags.DXT1);
                mipmap.Format = MipmapFormat.RGBA8888;
                break;
            }
        }
Esempio n. 2
0
        public void DecompressMipmap(ITexMipmap mipmap)
        {
            if (mipmap == null)
            {
                throw new ArgumentNullException(nameof(mipmap));
            }

            if (mipmap.IsLZ4Compressed)
            {
                mipmap.Bytes           = Lz4Decompress(mipmap.Bytes, mipmap.DecompressedBytesCount);
                mipmap.IsLZ4Compressed = false;
            }

            if (mipmap.Format.IsImage())
            {
                return;
            }

            switch (mipmap.Format)
            {
            case MipmapFormat.CompressedDXT5:
                mipmap.Bytes  = DXT.DecompressImage(mipmap.Width, mipmap.Height, mipmap.Bytes, DXTFlags.DXT5);
                mipmap.Format = MipmapFormat.RGBA8888;
                break;

            case MipmapFormat.CompressedDXT3:
                mipmap.Bytes  = DXT.DecompressImage(mipmap.Width, mipmap.Height, mipmap.Bytes, DXTFlags.DXT3);
                mipmap.Format = MipmapFormat.RGBA8888;
                break;

            case MipmapFormat.CompressedDXT1:
                mipmap.Bytes  = DXT.DecompressImage(mipmap.Width, mipmap.Height, mipmap.Bytes, DXTFlags.DXT1);
                mipmap.Format = MipmapFormat.RGBA8888;
                break;
            }
        }