00001
00005 #pragma once
00006 #include "texturecache.h"
00007 #include "d3d10drv.h"
00008
00009 class TexConvertor
00010 {
00011 private:
00012 TextureCache *textureCache;
00013
00017 struct TextureFormat
00018 {
00019 bool supported;
00020 char blocksize;
00021 bool directAssign;
00022 DXGI_FORMAT d3dFormat;
00023 void (*conversionFunc)(const FTextureInfo&, DWORD, void *, int);
00024 };
00025 static TexConvertor::TextureFormat formats[];
00026
00029 static void fromPaletted(const FTextureInfo& Info,DWORD PolyFlags,void *target, int mipLevel);
00030 static void fromBGRA7(const FTextureInfo& Info,DWORD PolyFlags,void *target,int mipLevel);
00032
00033 static void convertMip(const FTextureInfo& Info,const TextureFormat &format, DWORD PolyFlags,int mipLevel, D3D10_SUBRESOURCE_DATA &data);
00034 static TextureCache::TextureMetaData buildMetaData(const FTextureInfo& Info, DWORD PolyFlags,DWORD customPolyFlags=0);
00035
00036 public:
00037 TexConvertor(TextureCache *textureCache);
00038 bool loadOverride(const FTextureInfo& Info, DWORD PolyFlags) const;
00039 void convertAndCache(FTextureInfo& Info, DWORD PolyFlags) const;
00040 void update(FTextureInfo& Info,DWORD PolyFlags) const;
00041
00042 };