From 01cdb7661ba47c9cd5eb31a8a3441fae44e7af73 Mon Sep 17 00:00:00 2001 From: "HuYingzhuo(hugo/hyzboy)" Date: Mon, 5 Jun 2023 17:07:37 +0800 Subject: [PATCH] used UTF8String instead of OSString in shader_module_by_name and material_by_name of RenderResource --- inc/hgl/graph/VKRenderResource.h | 6 ++--- .../Vulkan/VKRenderResourceMaterial.cpp | 23 +++++++++---------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/inc/hgl/graph/VKRenderResource.h b/inc/hgl/graph/VKRenderResource.h index 406d9187..afe7b671 100644 --- a/inc/hgl/graph/VKRenderResource.h +++ b/inc/hgl/graph/VKRenderResource.h @@ -36,8 +36,8 @@ class RenderResource { GPUDevice *device; - ObjectMap shader_module_by_name; - Map material_by_name; + ObjectMap shader_module_by_name; + Map material_by_name; Map texture_by_name; IDResManage rm_material; ///<材质合集 @@ -95,7 +95,7 @@ public: // VBO/VAO public: //Material - const ShaderModule *CreateShaderModule(const OSString &filename,VkShaderStageFlagBits shader_stage,const uint32_t *spv_data,const size_t spv_size); + const ShaderModule *CreateShaderModule(const AnsiString &shader_module_name,VkShaderStageFlagBits shader_stage,const uint32_t *spv_data,const size_t spv_size); Material * CreateMaterial(const mtl::MaterialCreateInfo *); diff --git a/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp b/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp index bc665f21..712cb3cd 100644 --- a/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp +++ b/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp @@ -12,32 +12,31 @@ #include VK_NAMESPACE_BEGIN -const ShaderModule *RenderResource::CreateShaderModule(const OSString &filename,VkShaderStageFlagBits shader_stage,const uint32_t *spv_data,const size_t spv_size) +const ShaderModule *RenderResource::CreateShaderModule(const AnsiString &sm_name,VkShaderStageFlagBits shader_stage,const uint32_t *spv_data,const size_t spv_size) { if(!device)return(nullptr); - if(filename.IsEmpty())return(nullptr); + if(sm_name.IsEmpty())return(nullptr); if(!spv_data)return(nullptr); if(spv_size<4)return(nullptr); ShaderModule *sm; - if(shader_module_by_name.Get(filename,sm)) + if(shader_module_by_name.Get(sm_name,sm)) return sm; sm=device->CreateShaderModule(shader_stage,spv_data,spv_size); - shader_module_by_name.Add(filename,sm); + shader_module_by_name.Add(sm_name,sm); #ifdef _DEBUG { auto da=device->GetDeviceAttribute(); - const UTF8String sn=ToUTF8String(filename); - + if(da->debug_maker) - da->debug_maker->SetShaderModule(*sm,sn); + da->debug_maker->SetShaderModule(*sm,sm_name); if(da->debug_utils) - da->debug_utils->SetShaderModule(*sm,sn); + da->debug_utils->SetShaderModule(*sm,sm_name); } #endif//_DEBUG @@ -51,7 +50,7 @@ Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci) Material *mtl; - const OSString mtl_name=ToOSString(mci->GetName()); + const AnsiString mtl_name=mci->GetName(); if(material_by_name.Get(mtl_name,mtl)) return mtl; @@ -66,7 +65,7 @@ Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci) if(vert) { - sm=CreateShaderModule( mtl_name+OS_TEXT("?Vertex"), + sm=CreateShaderModule( mtl_name+U8_TEXT("?Vertex"), VK_SHADER_STAGE_VERTEX_BIT, vert->GetSPVData(),vert->GetSPVSize()); @@ -81,7 +80,7 @@ Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci) if(geom) { - sm=CreateShaderModule( mtl_name+OS_TEXT("?Geometry"), + sm=CreateShaderModule( mtl_name+U8_TEXT("?Geometry"), VK_SHADER_STAGE_GEOMETRY_BIT, geom->GetSPVData(),geom->GetSPVSize()); @@ -92,7 +91,7 @@ Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci) if(frag) { - sm=CreateShaderModule( mtl_name+OS_TEXT("?Fragment"), + sm=CreateShaderModule( mtl_name+U8_TEXT("?Fragment"), VK_SHADER_STAGE_FRAGMENT_BIT, frag->GetSPVData(),frag->GetSPVSize());