used UTF8String instead of OSString in shader_module_by_name and material_by_name of RenderResource
This commit is contained in:
parent
ab6a8435a1
commit
01cdb7661b
@ -36,8 +36,8 @@ class RenderResource
|
|||||||
{
|
{
|
||||||
GPUDevice *device;
|
GPUDevice *device;
|
||||||
|
|
||||||
ObjectMap<OSString,ShaderModule> shader_module_by_name;
|
ObjectMap<AnsiString,ShaderModule> shader_module_by_name;
|
||||||
Map<OSString,Material *> material_by_name;
|
Map<AnsiString,Material *> material_by_name;
|
||||||
Map<OSString,Texture *> texture_by_name;
|
Map<OSString,Texture *> texture_by_name;
|
||||||
|
|
||||||
IDResManage<MaterialID, Material> rm_material; ///<材质合集
|
IDResManage<MaterialID, Material> rm_material; ///<材质合集
|
||||||
@ -95,7 +95,7 @@ public: // VBO/VAO
|
|||||||
|
|
||||||
public: //Material
|
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 *);
|
Material * CreateMaterial(const mtl::MaterialCreateInfo *);
|
||||||
|
|
||||||
|
@ -12,32 +12,31 @@
|
|||||||
#include<hgl/shadergen/ShaderDescriptorInfo.h>
|
#include<hgl/shadergen/ShaderDescriptorInfo.h>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
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(!device)return(nullptr);
|
||||||
if(filename.IsEmpty())return(nullptr);
|
if(sm_name.IsEmpty())return(nullptr);
|
||||||
if(!spv_data)return(nullptr);
|
if(!spv_data)return(nullptr);
|
||||||
if(spv_size<4)return(nullptr);
|
if(spv_size<4)return(nullptr);
|
||||||
|
|
||||||
ShaderModule *sm;
|
ShaderModule *sm;
|
||||||
|
|
||||||
if(shader_module_by_name.Get(filename,sm))
|
if(shader_module_by_name.Get(sm_name,sm))
|
||||||
return sm;
|
return sm;
|
||||||
|
|
||||||
sm=device->CreateShaderModule(shader_stage,spv_data,spv_size);
|
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
|
#ifdef _DEBUG
|
||||||
{
|
{
|
||||||
auto da=device->GetDeviceAttribute();
|
auto da=device->GetDeviceAttribute();
|
||||||
const UTF8String sn=ToUTF8String(filename);
|
|
||||||
|
|
||||||
if(da->debug_maker)
|
if(da->debug_maker)
|
||||||
da->debug_maker->SetShaderModule(*sm,sn);
|
da->debug_maker->SetShaderModule(*sm,sm_name);
|
||||||
|
|
||||||
if(da->debug_utils)
|
if(da->debug_utils)
|
||||||
da->debug_utils->SetShaderModule(*sm,sn);
|
da->debug_utils->SetShaderModule(*sm,sm_name);
|
||||||
}
|
}
|
||||||
#endif//_DEBUG
|
#endif//_DEBUG
|
||||||
|
|
||||||
@ -51,7 +50,7 @@ Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci)
|
|||||||
|
|
||||||
Material *mtl;
|
Material *mtl;
|
||||||
|
|
||||||
const OSString mtl_name=ToOSString(mci->GetName());
|
const AnsiString mtl_name=mci->GetName();
|
||||||
|
|
||||||
if(material_by_name.Get(mtl_name,mtl))
|
if(material_by_name.Get(mtl_name,mtl))
|
||||||
return mtl;
|
return mtl;
|
||||||
@ -66,7 +65,7 @@ Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci)
|
|||||||
|
|
||||||
if(vert)
|
if(vert)
|
||||||
{
|
{
|
||||||
sm=CreateShaderModule( mtl_name+OS_TEXT("?Vertex"),
|
sm=CreateShaderModule( mtl_name+U8_TEXT("?Vertex"),
|
||||||
VK_SHADER_STAGE_VERTEX_BIT,
|
VK_SHADER_STAGE_VERTEX_BIT,
|
||||||
vert->GetSPVData(),vert->GetSPVSize());
|
vert->GetSPVData(),vert->GetSPVSize());
|
||||||
|
|
||||||
@ -81,7 +80,7 @@ Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci)
|
|||||||
|
|
||||||
if(geom)
|
if(geom)
|
||||||
{
|
{
|
||||||
sm=CreateShaderModule( mtl_name+OS_TEXT("?Geometry"),
|
sm=CreateShaderModule( mtl_name+U8_TEXT("?Geometry"),
|
||||||
VK_SHADER_STAGE_GEOMETRY_BIT,
|
VK_SHADER_STAGE_GEOMETRY_BIT,
|
||||||
geom->GetSPVData(),geom->GetSPVSize());
|
geom->GetSPVData(),geom->GetSPVSize());
|
||||||
|
|
||||||
@ -92,7 +91,7 @@ Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci)
|
|||||||
|
|
||||||
if(frag)
|
if(frag)
|
||||||
{
|
{
|
||||||
sm=CreateShaderModule( mtl_name+OS_TEXT("?Fragment"),
|
sm=CreateShaderModule( mtl_name+U8_TEXT("?Fragment"),
|
||||||
VK_SHADER_STAGE_FRAGMENT_BIT,
|
VK_SHADER_STAGE_FRAGMENT_BIT,
|
||||||
frag->GetSPVData(),frag->GetSPVSize());
|
frag->GetSPVData(),frag->GetSPVSize());
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user