added BindGlobalDescriptor at RenderResource

This commit is contained in:
hyzboy 2023-03-22 02:35:37 +08:00
parent 76f5dcb884
commit f2c6c24ddf
No known key found for this signature in database
GPG Key ID: 067EE4525D4FB6D3
2 changed files with 33 additions and 2 deletions

View File

@ -47,7 +47,8 @@ class RenderResource
IDResManage<TextureID, Texture> rm_textures; ///<纹理合集
IDResManage<RenderableID, Renderable> rm_renderables; ///<渲染实例集合集
Map<AnsiString,DeviceBuffer *> global_buffer_map; ///<全局UBO
Map<AnsiString,DeviceBuffer *> global_buffer_map; ///<全局Buffer(UBO/SSBO)
Map<AnsiString,Texture *> global_texture_map; ///<全局Texture
public:
@ -65,7 +66,7 @@ public: //Add
TextureID Add(Texture * t ){return rm_textures.Add(t);}
RenderableID Add(Renderable * r ){return rm_renderables.Add(r);}
public: //全局属性
public: //全局属性(对应shader中的PerGlobal set合集)
void SetGlobal(const AnsiString &name,DeviceBuffer *buf);
@ -73,6 +74,8 @@ public: //全局属性
void Free(DeviceBuffer *);
void BindGlobalDescriptor(MaterialInstance *);
public: // VBO/VAO
VBO *CreateVBO(VkFormat format,uint32_t count,const void *data,SharingMode sm=SharingMode::Exclusive);

View File

@ -32,6 +32,34 @@ void RenderResource::Free(DeviceBuffer *buf)
global_buffer_map.DeleteByValue(buf);
}
void RenderResource::BindGlobalDescriptor(MaterialInstance *mi)
{
if(!mi)return;
const uint count=global_buffer_map.GetCount();
if(count<=0)return;
auto **gb_list=global_buffer_map.GetDataList();
auto *mp=mi->GetMP(DescriptorSetType::Global);
if(!mp)
return;
if(mp->GetDescriptorCount()<=0)
return;
for(uint i=0;i<count;i++)
{
mp->BindUBO((*gb_list)->left,(*gb_list)->right);
++gb_list;
}
mp->Update();
}
VBO *RenderResource::CreateVBO(VkFormat format,uint32_t count,const void *data,SharingMode sharing_mode)
{
VBO *vb=device->CreateVBO(format,count,data,sharing_mode);