ULRE/src/RenderDevice/Vulkan/VKMaterialInstance.cpp

44 lines
843 B
C++
Raw Normal View History

2020-01-20 15:39:39 +08:00
#include<hgl/graph/vulkan/VKMaterialInstance.h>
#include<hgl/graph/vulkan/VKMaterial.h>
#include<hgl/graph/vulkan/VKDescriptorSets.h>
VK_NAMESPACE_BEGIN
MaterialInstance::MaterialInstance(Material *m,DescriptorSets *ds)
{
material=m;
descriptor_sets=ds;
}
MaterialInstance::~MaterialInstance()
{
delete descriptor_sets;
}
bool MaterialInstance::BindUBO(const UTF8String &name,vulkan::Buffer *ubo)
{
const int index=material->GetUBO(name);
if(index<0)
return(false);
if(!descriptor_sets->BindUBO(index,ubo))
return(false);
return(true);
}
void MaterialInstance::Update()
{
descriptor_sets->Update();
}
MaterialInstance *Material::CreateInstance()
{
DescriptorSets *ds=CreateDescriptorSets();
if(!ds)return(nullptr);
return(new MaterialInstance(this,ds));
}
VK_NAMESPACE_END