예제 #1
0
        protected override Task <Texture> GetNewTextureAsync(int id)
        {
            var textures = data.textures;

            var width  = (int)textures.desc[id].width;
            var height = (int)textures.desc[id].height;

            var levels = (int)textures.desc[id].levels;
            var type   = (int)textures.desc[id].type;

            var stream = textures.data[id];

            Texture texture;

            switch (type)
            {
            case 0x0C:
                texture = new DXT1Texture(id, width, height, levels, Endianness.LittleEndian, stream);
                break;

            case 0x0F:
                texture = new DXT5Texture(id, width, height, levels, Endianness.LittleEndian, stream);
                break;

            default:
                texture = new UnknownTexture(id, width, height, levels, stream);
                break;
            }
            return(Task.FromResult(texture));
        }
예제 #2
0
        public DDSTexture(int id, DDSInfo info, Stream stream) : base(id, info.Width, info.Height, info.Levels, stream)
        {
            switch (info.PixelFormat)
            {
            case DXTType.DXT1:
                Inner = new DXT1Texture(Id, Width, Height, Levels, Endianness.LittleEndian, info.Stream);
                break;

            case DXTType.DXT3:
                Inner = new DXT3Texture(Id, Width, Height, Levels, Endianness.LittleEndian, info.Stream);
                break;

            case DXTType.DXT5:
                Inner = new DXT5Texture(Id, Width, Height, Levels, Endianness.LittleEndian, info.Stream);
                break;
            }
        }