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 *);
|
||||
|
||||
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)
|
||||
{
|
||||
const ShaderModule *vs=CreateShader(VK_SHADER_STAGE_VERTEX_BIT,vertex_shader_filename);
|
||||
@ -74,6 +76,33 @@ public:
|
||||
|
||||
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
|
||||
VK_NAMESPACE_END
|
||||
#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));
|
||||
}
|
||||
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user