"L. Spiro Engine"
|
00001 00017 #ifndef __LSG_TEXTUREMANAGER_H__ 00018 #define __LSG_TEXTUREMANAGER_H__ 00019 00020 #include "../LSGGraphicsLib.h" 00021 #include "LSGStandardTexture.h" 00022 #include "Map/LSTLMap.h" 00023 #include "String/LSTLString.h" 00024 00025 namespace lsg { 00026 00034 class CTextureManager { 00035 public : 00036 // == Various constructors. 00037 LSE_CALLCTOR CTextureManager(); 00038 LSE_CALLCTOR ~CTextureManager(); 00039 00040 00041 // == Functions. 00054 CSharedStdTexPtr LSE_CALL CreateSharedTexFromMemory( LSUINT32 _ui32Crc1, LSUINT32 _ui32Crc2, 00055 const LSUINT8 * _pui8Data, LSUINTPTR _uiptrLen, const LSG_TEX_PARMS &_tpParms ); 00056 00065 CSharedStdTexPtr LSE_CALL CreateSharedTexFromFile( const LSCHAR * _pcPath, 00066 const LSG_TEX_PARMS &_tpParms ); 00067 00080 CSharedStdTexPtr LSE_CALL CreateNormalMapFromBumpTexture( LSUINT32 _ui32Crc1, LSUINT32 _ui32Crc2, 00081 const CSharedStdTexPtr _sstpBumpTexture, LSBOOL _bWrapX = true, LSBOOL _bWrapY = true ); 00082 00096 CSharedStdTexPtr LSE_CALL CombineRgbAlphaTextures( LSUINT32 _ui32CrcRgb1, LSUINT32 _ui32CrcRgb2, 00097 const CSharedStdTexPtr _sstpRgbTexture, 00098 LSUINT32 _ui32CrcAlpha1, LSUINT32 _ui32CrcAlpha2, 00099 const CSharedStdTexPtr _sstpAlphaTexture, 00100 const LSG_TEX_PARMS &_tpParms ); 00101 00106 LSVOID LSE_CALL Release(); 00107 00112 LSVOID LSE_CALL ReleaseUnreferenced(); 00113 00114 protected : 00115 // == Types. 00120 typedef struct LSG_TEXTURE_DATA { 00124 CString sPath; 00125 00129 LSUINT32 ui32Crc1; 00130 00134 LSUINT32 ui32Crc2; 00135 00136 00137 // == Operators. 00144 LSG_TEXTURE_DATA & LSE_CALL operator = ( const LSG_TEXTURE_DATA &_tdOther ); 00145 00152 LSBOOL LSE_CALL operator == ( const LSG_TEXTURE_DATA &_tdOther ) const; 00153 00162 LSBOOL LSE_CALL operator < ( const LSG_TEXTURE_DATA &_tdOther ) const; 00163 } * LPLSG_TEXTURE_DATA, * const LPCLSG_TEXTURE_DATA; 00164 00169 typedef struct LSG_TEXTURE_DATA_COMBINED { 00173 LSG_TEXTURE_DATA tdCrc1; 00174 00178 LSG_TEXTURE_DATA tdCrc2; 00179 00180 00181 // == Operators. 00188 LSBOOL LSE_CALL operator == ( const LSG_TEXTURE_DATA_COMBINED &_tdcOther ) const; 00189 00198 LSBOOL LSE_CALL operator < ( const LSG_TEXTURE_DATA_COMBINED &_tdcOther ) const; 00199 } * LPLSG_TEXTURE_DATA_COMBINED, * const LPCLSG_TEXTURE_DATA_COMBINED; 00200 00201 00202 // == Members. 00207 CMap<LSG_TEXTURE_DATA, CSharedStdTexPtr> m_mSharedData; 00208 00212 CMap<LSG_TEXTURE_DATA, LSG_TEXTURE_DATA> m_mBumpConversions; 00213 00217 CMap<LSG_TEXTURE_DATA_COMBINED, LSG_TEXTURE_DATA> m_mCombinedTextures; 00218 }; 00219 00220 } // namespace lsg 00221 00222 #endif // __LSG_TEXTUREMANAGER_H__