ULRE/example/Vulkan/VKMaterial.h

48 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;
2019-04-27 02:07:06 +08:00
class DescriptorSetLayout;
2019-04-25 10:09:56 +08:00
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;
ShaderModule *shader_modules;
2019-04-27 02:07:06 +08:00
DescriptorSetLayoutCreater *dsl_creater;
2019-04-25 10:09:56 +08:00
public:
Material(Device *dev,);
2019-04-25 10:09:56 +08:00
~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;
2019-04-27 02:07:06 +08:00
DescriptorSetLayout *desc_set_layout;
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