材质保存来自MaterialCreateInfo传递而来的PrimitiveType信息,并在创建Pipeline时传递.

减少在使用中的第二次手写传递,避免失误。
This commit is contained in:
2025-06-12 00:00:14 +08:00
parent 5935c3140f
commit 3fd6f98ef7
14 changed files with 46 additions and 34 deletions

View File

@@ -24,6 +24,8 @@ class Material
{
AnsiString name;
PrimitiveType prim; ///<图元类型
VertexInput *vertex_input;
ShaderModuleMap *shader_maps;
@@ -45,7 +47,7 @@ private:
friend class RenderResource;
Material(const AnsiString &);
Material(const AnsiString &,const PrimitiveType &);
public:
@@ -53,6 +55,8 @@ public:
const AnsiString & GetName ()const{return name;}
const PrimitiveType & GetPrimitiveType ()const{return prim;}
const VertexInput * GetVertexInput ()const{return vertex_input;}
const ShaderStageCreateInfoList & GetStageList ()const{return shader_stage_list;}

View File

@@ -56,15 +56,15 @@ public:
public:
Pipeline *CreatePipeline(Material *,const VIL *,const PipelineData *, const PrimitiveType &,const bool prim_restart=false);
Pipeline *CreatePipeline(Material *,const VIL *,const InlinePipeline &, const PrimitiveType &,const bool prim_restart=false);
Pipeline *CreatePipeline(Material *,const VIL *,const PipelineData *, const bool prim_restart=false);
Pipeline *CreatePipeline(Material *,const VIL *,const InlinePipeline &, const bool prim_restart=false);
Pipeline *CreatePipeline(Material *mtl, const PipelineData *, const PrimitiveType &,const bool prim_restart=false);
Pipeline *CreatePipeline(Material *mtl, const InlinePipeline &, const PrimitiveType &,const bool prim_restart=false);
Pipeline *CreatePipeline(Material *mtl, const PipelineData *, const bool prim_restart=false);
Pipeline *CreatePipeline(Material *mtl, const InlinePipeline &, const bool prim_restart=false);
Pipeline *CreatePipeline(MaterialInstance *, const InlinePipeline &, const PrimitiveType &,const bool prim_restart=false);
Pipeline *CreatePipeline(MaterialInstance *, const PipelineData *, const PrimitiveType &,const bool prim_restart=false);
Pipeline *CreatePipeline(MaterialInstance *, const OSString &, const PrimitiveType &,const bool prim_restart=false);
Pipeline *CreatePipeline(MaterialInstance *, const InlinePipeline &, const bool prim_restart=false);
Pipeline *CreatePipeline(MaterialInstance *, const PipelineData *, const bool prim_restart=false);
Pipeline *CreatePipeline(MaterialInstance *, const OSString &, const bool prim_restart=false);
};//class RenderPass
VK_NAMESPACE_END
#endif//HGL_GRAPH_VULKAN_RENDER_PASS_INCLUDE

View File

@@ -45,6 +45,8 @@ namespace hgl::graph
public:
const PrimitiveType GetPrimitiveType()const{return config->prim;}
const uint32 GetShaderStage ()const{return config->shader_stage_flag_bit;}
bool hasShader (const VkShaderStageFlagBits ss)const{return config->shader_stage_flag_bit&ss;}