#include <hls_texture_bank.h>
Nevrax France
Definition at line 50 of file hls_texture_bank.h.
Public Member Functions | |
CHLSTextureBank () | |
Constructor. | |
Build | |
uint32 | addColorTexture (const CHLSColorTexture &tex) |
Add a colorisable texture to the bank. | |
void | addTextureInstance (const std::string &name, uint32 colorTextureId, const std::vector< CHLSColorDelta > &cols) |
void | compile () |
compile the bank. | |
void | reset () |
clear the bank | |
void | serial (NLMISC::IStream &f) |
serial. if loading, ptrs are correclty setuped => no compile() needed | |
Usage | |
void | fillHandleArray (std::vector< CTextureInstanceHandle > &array) |
Append handle into the array (build of the manager). | |
Private Member Functions | |
void | compilePtrs () |
Private Attributes | |
std::vector< CHLSColorTexture > | _ColorTextures |
Array of colorisable texture. | |
std::vector< uint8 > | _TextureInstanceData |
Raw Array of Name+HLS color delta. | |
std::vector< CTextureInstance > | _TextureInstances |
Array of textureInstances. |
|
Constructor.
Definition at line 45 of file hls_texture_bank.cpp.
00046 { 00047 } |
|
Add a colorisable texture to the bank.
Definition at line 56 of file hls_texture_bank.cpp. References _ColorTextures, and uint32.
00057 { 00058 _ColorTextures.push_back(tex); 00059 return _ColorTextures.size()-1; 00060 } |
|
Add an instance texture (ie colorised) to the bank
Definition at line 62 of file hls_texture_bank.cpp. References NL3D::CHLSTextureBank::CTextureInstance::_ColorTextureId, NL3D::CHLSTextureBank::CTextureInstance::_ColorTexturePtr, _ColorTextures, NL3D::CHLSTextureBank::CTextureInstance::_DataIndex, NL3D::CHLSTextureBank::CTextureInstance::_DataPtr, _TextureInstanceData, _TextureInstances, NL3D::CHLSColorTexture::getNumMasks(), nlassert, NLMISC::strlwr(), and uint32.
00063 { 00064 string nameLwr= strlwr(name); 00065 00066 // checks 00067 nlassert(colorTextureId<_ColorTextures.size()); 00068 CHLSColorTexture &colText= _ColorTextures[colorTextureId]; 00069 nlassert(cols.size()==colText.getNumMasks()); 00070 00071 // new instance 00072 CTextureInstance textInst; 00073 textInst._ColorTextureId= colorTextureId; 00074 textInst._DataIndex= _TextureInstanceData.size(); 00075 // leave ptrs undefined 00076 textInst._DataPtr= NULL; 00077 textInst._ColorTexturePtr= NULL; 00078 00079 // allocate/fill data 00080 uint32 nameSize= (nameLwr.size()+1); 00081 uint32 colSize= cols.size()*sizeof(CHLSColorDelta); 00082 _TextureInstanceData.resize(_TextureInstanceData.size() + nameSize + colSize); 00083 // copy name 00084 memcpy(&_TextureInstanceData[textInst._DataIndex], nameLwr.c_str(), nameSize); 00085 // copy cols 00086 memcpy(&_TextureInstanceData[textInst._DataIndex+nameSize], &cols[0], colSize); 00087 00088 // add the instance. 00089 _TextureInstances.push_back(textInst); 00090 } |
|
compile the bank.
Definition at line 107 of file hls_texture_bank.cpp. References compilePtrs().
00108 { 00109 // compile the ptrs. 00110 compilePtrs(); 00111 00112 // No other ops for now. 00113 } |
|
Definition at line 92 of file hls_texture_bank.cpp. References NL3D::CHLSTextureBank::CTextureInstance::_ColorTextureId, NL3D::CHLSTextureBank::CTextureInstance::_ColorTexturePtr, _ColorTextures, NL3D::CHLSTextureBank::CTextureInstance::_DataIndex, NL3D::CHLSTextureBank::CTextureInstance::_DataPtr, _TextureInstanceData, _TextureInstances, data, uint, and uint8. Referenced by compile(), and serial().
00093 { 00094 uint8 *data= &_TextureInstanceData[0]; 00095 00096 // For all texture instances, compute ptr. 00097 for(uint i=0;i<_TextureInstances.size();i++) 00098 { 00099 CTextureInstance &text= _TextureInstances[i]; 00100 text._DataPtr= data + text._DataIndex; 00101 text._ColorTexturePtr= &_ColorTextures[text._ColorTextureId]; 00102 } 00103 } |
|
Append handle into the array (build of the manager).
Definition at line 135 of file hls_texture_bank.cpp. References _TextureInstances, NL3D::CHLSTextureBank::CTextureInstanceHandle::Texture, and uint. Referenced by NL3D::CHLSTextureManager::addBank().
00136 { 00137 for(uint i=0;i<_TextureInstances.size();i++) 00138 { 00139 CTextureInstanceHandle h; 00140 h.Texture= &_TextureInstances[i]; 00141 array.push_back(h); 00142 } 00143 } |
|
clear the bank
Definition at line 49 of file hls_texture_bank.cpp. References _ColorTextures, _TextureInstanceData, and _TextureInstances.
|
|
serial. if loading, ptrs are correclty setuped => no compile() needed
Definition at line 117 of file hls_texture_bank.cpp. References _ColorTextures, _TextureInstanceData, _TextureInstances, compilePtrs(), NLMISC::IStream::isReading(), NLMISC::IStream::serialCont(), NLMISC::IStream::serialVersion(), and sint.
00118 { 00119 sint ver= f.serialVersion(0); 00120 00121 f.serialCont(_ColorTextures); 00122 f.serialCont(_TextureInstanceData); 00123 f.serialCont(_TextureInstances); 00124 00125 // Must compile ptrs. 00126 if(f.isReading()) 00127 { 00128 // compile the ptrs only. 00129 compilePtrs(); 00130 } 00131 } |
|
Array of colorisable texture.
Definition at line 147 of file hls_texture_bank.h. Referenced by addColorTexture(), addTextureInstance(), compilePtrs(), reset(), and serial(). |
|
Raw Array of Name+HLS color delta.
Definition at line 150 of file hls_texture_bank.h. Referenced by addTextureInstance(), compilePtrs(), reset(), and serial(). |
|
Array of textureInstances.
Definition at line 153 of file hls_texture_bank.h. Referenced by addTextureInstance(), compilePtrs(), fillHandleArray(), reset(), and serial(). |