ULRE/example/Vulkan/VKMaterial.h

50 lines
1.1 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
2019-04-27 01:36:58 +08:00
class Device;
2019-04-25 10:09:56 +08:00
class Shader;
class DescriptorSetLayoutCreater;
class MaterialInstance;
class VertexAttributeBinding;
2019-04-25 10:09:56 +08:00
/**
* <br>
* shaderDescriptorSetLayoutCreater
*/
class Material
{
2019-04-27 01:36:58 +08:00
Device *device;
2019-04-25 10:09:56 +08:00
Shader *shader;
public:
2019-04-27 01:36:58 +08:00
Material(Device *dev,Shader *s)
2019-04-25 10:09:56 +08:00
{
2019-04-27 01:36:58 +08:00
device=dev;
2019-04-25 10:09:56 +08:00
shader=s;
}
~Material();
MaterialInstance *CreateInstance();
};//class Material
/**
* <br>
* Material的情况下UBO/TEXTURE等pipeline
*/
class MaterialInstance
{
const Material *mat; ///<这里的是对material的完全引用不做任何修改
2019-04-27 01:36:58 +08:00
VertexAttributeBinding *vab;
DescriptorSetLayoutCreater *dsl_creater;
2019-04-25 10:09:56 +08:00
public:
2019-04-27 01:36:58 +08:00
MaterialInstance(Material *m);
2019-04-25 10:09:56 +08:00
~MaterialInstance();
};//class MaterialInstance
VK_NAMESPACE_END
#endif//HGL_GRAPH_VULKAN_MATERIAL_INCLUDE