ULRE/example/Vulkan/VKMaterial.h

56 lines
1.3 KiB
C
Raw Normal View History

2019-04-25 10:09:56 +08:00
#ifndef HGL_GRAPH_VULKAN_MATERIAL_INCLUDE
#define HGL_GRAPH_VULKAN_MATERIAL_INCLUDE
#include"VK.h"
VK_NAMESPACE_BEGIN
class Shader;
class DescriptorSetLayoutCreater;
class MaterialInstance;
2019-04-25 21:57:37 +08:00
class VertexInputState;
class VertexInputStateInstance;
2019-04-25 10:09:56 +08:00
/**
* <br>
* shaderDescriptorSetLayoutCreater
*/
class Material
{
Shader *shader;
2019-04-25 21:57:37 +08:00
VertexInputState *vis;
2019-04-25 10:09:56 +08:00
DescriptorSetLayoutCreater *dsl_creater;
public:
2019-04-25 21:57:37 +08:00
Material(Shader *s,VertexInputState *state,DescriptorSetLayoutCreater *dslc)
2019-04-25 10:09:56 +08:00
{
shader=s;
2019-04-25 21:57:37 +08:00
vis=state;
2019-04-25 10:09:56 +08:00
dsl_creater=dslc;
}
~Material();
MaterialInstance *CreateInstance();
};//class Material
/**
* <br>
* Material的情况下UBO/TEXTURE等pipeline
*/
class MaterialInstance
{
const Material *mat; ///<这里的是对material的完全引用不做任何修改
VertexInputStateInstance *vis_instance; ///<这里的vis是Material中vis的复制体
2019-04-25 10:09:56 +08:00
public:
MaterialInstance(Material *m,VertexInputStateInstance *vi)
2019-04-25 10:09:56 +08:00
{
mat=m;
vis_instance=vi;
2019-04-25 10:09:56 +08:00
}
~MaterialInstance();
};//class MaterialInstance
VK_NAMESPACE_END
#endif//HGL_GRAPH_VULKAN_MATERIAL_INCLUDE