Add ShaderModuleManage::CreateMaterial(vs,gs,fs) functions
This commit is contained in:
parent
9d9dd30416
commit
1ca44cd037
@ -57,6 +57,8 @@ public:
|
|||||||
bool ReleaseShader (const ShaderModule *);
|
bool ReleaseShader (const ShaderModule *);
|
||||||
|
|
||||||
Material * CreateMaterial(const VertexShaderModule *vertex_shader_module,const ShaderModule *fragment_shader_module)const;
|
Material * CreateMaterial(const VertexShaderModule *vertex_shader_module,const ShaderModule *fragment_shader_module)const;
|
||||||
|
Material * CreateMaterial(const VertexShaderModule *vertex_shader_module,const ShaderModule *geometry_shader_module,const ShaderModule *fragment_shader_module)const;
|
||||||
|
|
||||||
Material * CreateMaterial(const OSString &vertex_shader_filename,const OSString &fragment_shader_filename)
|
Material * CreateMaterial(const OSString &vertex_shader_filename,const OSString &fragment_shader_filename)
|
||||||
{
|
{
|
||||||
const ShaderModule *vs=CreateShader(VK_SHADER_STAGE_VERTEX_BIT,vertex_shader_filename);
|
const ShaderModule *vs=CreateShader(VK_SHADER_STAGE_VERTEX_BIT,vertex_shader_filename);
|
||||||
@ -74,6 +76,33 @@ public:
|
|||||||
|
|
||||||
return(CreateMaterial((VertexShaderModule *)vs,fs));
|
return(CreateMaterial((VertexShaderModule *)vs,fs));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Material * CreateMaterial(const OSString &vertex_shader_filename,const OSString &geometry_shader_filename,const OSString &fragment_shader_filename)
|
||||||
|
{
|
||||||
|
const ShaderModule *vs=CreateShader(VK_SHADER_STAGE_VERTEX_BIT,vertex_shader_filename);
|
||||||
|
|
||||||
|
if(!vs)
|
||||||
|
return(nullptr);
|
||||||
|
|
||||||
|
const ShaderModule *gs=CreateShader(VK_SHADER_STAGE_GEOMETRY_BIT,geometry_shader_filename);
|
||||||
|
|
||||||
|
if(!gs)
|
||||||
|
{
|
||||||
|
ReleaseShader(vs);
|
||||||
|
return(nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
const ShaderModule *fs=CreateShader(VK_SHADER_STAGE_FRAGMENT_BIT,fragment_shader_filename);
|
||||||
|
|
||||||
|
if(!fs)
|
||||||
|
{
|
||||||
|
ReleaseShader(gs);
|
||||||
|
ReleaseShader(vs);
|
||||||
|
return(nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return(CreateMaterial((VertexShaderModule *)vs,gs,fs));
|
||||||
|
}
|
||||||
};//class ShaderModuleManage
|
};//class ShaderModuleManage
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
#endif//HGL_GRAPH_VULKAN_SHADER_MODULE_MANAGE_INCLUDE
|
#endif//HGL_GRAPH_VULKAN_SHADER_MODULE_MANAGE_INCLUDE
|
||||||
|
@ -114,4 +114,24 @@ Material *ShaderModuleManage::CreateMaterial(const VertexShaderModule *vertex_sh
|
|||||||
|
|
||||||
return(VK_NAMESPACE::CreateMaterial(device,smm));
|
return(VK_NAMESPACE::CreateMaterial(device,smm));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Material *ShaderModuleManage::CreateMaterial(const VertexShaderModule *vertex_shader_module,const ShaderModule *geometry_shader_module,const ShaderModule *fragment_shader_module)const
|
||||||
|
{
|
||||||
|
if(!vertex_shader_module
|
||||||
|
||!geometry_shader_module
|
||||||
|
||!fragment_shader_module)
|
||||||
|
return(nullptr);
|
||||||
|
|
||||||
|
if(vertex_shader_module->GetStage()!=VK_SHADER_STAGE_VERTEX_BIT)return(nullptr);
|
||||||
|
if(geometry_shader_module->GetStage()!=VK_SHADER_STAGE_GEOMETRY_BIT)return(nullptr);
|
||||||
|
if(fragment_shader_module->GetStage()!=VK_SHADER_STAGE_FRAGMENT_BIT)return(nullptr);
|
||||||
|
|
||||||
|
ShaderModuleMap *smm=new ShaderModuleMap;
|
||||||
|
|
||||||
|
smm->Add(VK_SHADER_STAGE_VERTEX_BIT,vertex_shader_module);
|
||||||
|
smm->Add(VK_SHADER_STAGE_GEOMETRY_BIT,geometry_shader_module);
|
||||||
|
smm->Add(VK_SHADER_STAGE_FRAGMENT_BIT,fragment_shader_module);
|
||||||
|
|
||||||
|
return(VK_NAMESPACE::CreateMaterial(device,smm));
|
||||||
|
}
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
Loading…
x
Reference in New Issue
Block a user