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 };