#ifndef HGL_GRAPH_VULKAN_MATERIAL_INCLUDE #define HGL_GRAPH_VULKAN_MATERIAL_INCLUDE #include"VK.h" VK_NAMESPACE_BEGIN class Shader; class DescriptorSetLayoutCreater; class MaterialInstance; class VertexInputState; class VertexInputStateInstance; /** * 材质类
* 用于管理shader,提供DescriptorSetLayoutCreater */ class Material { Shader *shader; VertexInputState *vis; DescriptorSetLayoutCreater *dsl_creater; public: Material(Shader *s,VertexInputState *state,DescriptorSetLayoutCreater *dslc) { shader=s; vis=state; dsl_creater=dslc; } ~Material(); MaterialInstance *CreateInstance(); };//class Material /** * 材质实例
* 用于在指定Material的情况下,具体绑定UBO/TEXTURE等,提供pipeline */ class MaterialInstance { const Material *mat; ///<这里的是对material的完全引用,不做任何修改 VertexInputStateInstance *vis_instance; ///<这里的vis是Material中vis的复制体 public: MaterialInstance(Material *m,VertexInputStateInstance *vi) { mat=m; vis_instance=vi; } ~MaterialInstance(); };//class MaterialInstance VK_NAMESPACE_END #endif//HGL_GRAPH_VULKAN_MATERIAL_INCLUDE