4 #include <unordered_map>
14 using std::unordered_map;
23 TextureManager::TextureManager(
Renderer* renderer): mutex(
"texturemanager-mutex") {
28 for (
const auto& [textureManagedId, textureManaged]:
textures)
delete textureManaged;
35 auto textureManagedIt =
textures.find(
id);
36 if (textureManagedIt !=
textures.end()) {
38 auto textureManaged = textureManagedIt->second;
39 textureManaged->incrementReferenceCounter();
43 return textureManaged;
50 textureManaged->incrementReferenceCounter();
56 return textureManaged;
63 auto rendererId = textureManaged->getRendererId();
66 if (created ==
true) {
74 textureManaged->setUploaded(
true);
85 auto rendererId = textureManaged->getRendererId();
88 if (created ==
true) {
96 textureManaged->setUploaded(
true);
106 auto textureManagedIt =
textures.find(textureId);
107 if (textureManagedIt !=
textures.end()) {
108 auto textureManaged = textureManagedIt->second;
109 if (textureManaged->decrementReferenceCounter()) {
111 auto textureRendererId = textureManaged->getRendererId();
118 delete textureManaged;
127 Console::println(
string(
"Warning: texture not loaded by texture manager: " + textureId));
const string & getId() const
void removeTexture(Texture *texture)
Removes a texture from manager.
unordered_map< string, TextureManager_TextureManaged * > textures
int32_t addTexture(Texture *texture, int contextIdx=0)
Adds a texture to manager.
int32_t addCubeMapTexture(const string &id, Texture *textureLeft, Texture *textureRight, Texture *textureTop, Texture *textureBottom, Texture *textureFront, Texture *textureBack, int contextIdx=0)
Adds a cube map texture to manager.
friend class TextureManager_TextureManaged
~TextureManager()
Destructor.
TextureManager_TextureManaged * addTexture(const string &id, bool &created)
Adds a texture to manager.
virtual void bindCubeMapTexture(int contextIdx, int32_t textureId)=0
Binds a cube map texture with given id or unbinds when using ID_NONE.
virtual int32_t createTexture()=0
Creates a texture.
virtual void bindTexture(int contextIdx, int32_t textureId)=0
Binds a texture with given id or unbinds when using ID_NONE.
virtual void disposeTexture(int32_t textureId)=0
Dispose a texture.
virtual void uploadTexture(int contextIdx, Texture *texture)=0
Uploads texture data to current bound texture.
virtual void uploadCubeMapTexture(int contextIdx, Texture *textureLeft, Texture *textureRight, Texture *textureTop, Texture *textureBottom, Texture *textureFront, Texture *textureBack)=0
Uploads cube map texture data to current bound texture.
void unlock()
Unlocks this mutex.
void lock()
Locks the mutex, additionally mutex locks will block until other locks have been unlocked.