From 173d3e075a7f6a6308b7f7338a267c02aba47440 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Wed, 6 Nov 2024 00:21:01 +0800 Subject: [PATCH] To add newly texture to set/map in TextureManager --- inc/hgl/graph/manager/TextureManager.h | 9 ++++++++- src/SceneGraph/Vulkan/Texture/VKTexture2D.cpp | 2 +- src/SceneGraph/Vulkan/Texture/VKTexture2DArray.cpp | 6 +++++- src/SceneGraph/Vulkan/Texture/VKTextureCube.cpp | 6 +++++- src/SceneGraph/manager/TextureManager.cpp | 8 ++++---- 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/inc/hgl/graph/manager/TextureManager.h b/inc/hgl/graph/manager/TextureManager.h index 32678a24..27f54472 100644 --- a/inc/hgl/graph/manager/TextureManager.h +++ b/inc/hgl/graph/manager/TextureManager.h @@ -28,7 +28,7 @@ private: Map texture_by_id; - Map texture_by_name; + Map texture_by_filename; private: @@ -103,6 +103,13 @@ public: //Create/Chagne public: void Release(Texture *); + void Destory(Texture *tex) + { + if(!tex)return; + + Release(tex); + delete tex; + } public: // Load diff --git a/src/SceneGraph/Vulkan/Texture/VKTexture2D.cpp b/src/SceneGraph/Vulkan/Texture/VKTexture2D.cpp index 026e7fb8..6b3bb01e 100644 --- a/src/SceneGraph/Vulkan/Texture/VKTexture2D.cpp +++ b/src/SceneGraph/Vulkan/Texture/VKTexture2D.cpp @@ -15,7 +15,7 @@ Texture2D *TextureManager::CreateTexture2D(TextureData *tex_data) Texture2D *tex=new Texture2D(this,AcquireID(),tex_data); - texture_set.Add(tex); + Add(tex); return tex; } diff --git a/src/SceneGraph/Vulkan/Texture/VKTexture2DArray.cpp b/src/SceneGraph/Vulkan/Texture/VKTexture2DArray.cpp index aeacec87..48acb701 100644 --- a/src/SceneGraph/Vulkan/Texture/VKTexture2DArray.cpp +++ b/src/SceneGraph/Vulkan/Texture/VKTexture2DArray.cpp @@ -13,7 +13,11 @@ Texture2DArray *TextureManager::CreateTexture2DArray(TextureData *tex_data) if(!tex_data) return(nullptr); - return(new Texture2DArray(this,AcquireID(),tex_data)); + Texture2DArray *tex=new Texture2DArray(this,AcquireID(),tex_data); + + Add(tex); + + return tex; } Texture2DArray *TextureManager::CreateTexture2DArray(TextureCreateInfo *tci) diff --git a/src/SceneGraph/Vulkan/Texture/VKTextureCube.cpp b/src/SceneGraph/Vulkan/Texture/VKTextureCube.cpp index df2f63dd..d8c7637f 100644 --- a/src/SceneGraph/Vulkan/Texture/VKTextureCube.cpp +++ b/src/SceneGraph/Vulkan/Texture/VKTextureCube.cpp @@ -12,7 +12,11 @@ TextureCube *TextureManager::CreateTextureCube(TextureData *tex_data) if(!tex_data) return(nullptr); - return(new TextureCube(this,AcquireID(),tex_data)); + TextureCube *tex=new TextureCube(this,AcquireID(),tex_data); + + Add(tex); + + return tex; } TextureCube *TextureManager::CreateTextureCube(TextureCreateInfo *tci) diff --git a/src/SceneGraph/manager/TextureManager.cpp b/src/SceneGraph/manager/TextureManager.cpp index 4baf1c0c..ae4bd6bd 100644 --- a/src/SceneGraph/manager/TextureManager.cpp +++ b/src/SceneGraph/manager/TextureManager.cpp @@ -43,7 +43,7 @@ const TextureID TextureManager::Add(Texture *tex,const OSString &tn) return id; if(!tn.IsEmpty()) - texture_by_name.Add(tn,tex); + texture_by_filename.Add(tn,tex); return id; } @@ -58,7 +58,7 @@ void TextureManager::Release(Texture *tex) texture_set.Delete(tex); texture_by_id.DeleteByKey(tex->GetID()); - texture_by_name.DeleteByValue(tex); + texture_by_filename.DeleteByValue(tex); } Texture2D *CreateTexture2DFromFile(TextureManager *tm,const OSString &filename,bool auto_mipmaps); @@ -67,7 +67,7 @@ Texture2D *TextureManager::LoadTexture2D(const OSString &filename,bool auto_mipm { Texture2D *tex; - if(texture_by_name.Get(filename,(Texture *&)tex)) + if(texture_by_filename.Get(filename,(Texture *&)tex)) return tex; tex=CreateTexture2DFromFile(this,filename,auto_mipmaps); @@ -132,7 +132,7 @@ TextureCube *TextureManager::LoadTextureCube(const OSString &filename,bool auto_ { TextureCube *tex; - if(texture_by_name.Get(filename,(Texture *&)tex)) + if(texture_by_filename.Get(filename,(Texture *&)tex)) return tex; tex=CreateTextureCubeFromFile(this,filename,auto_mipmaps);