added SetGlobal/GetGlobal/Free at RenderResource

This commit is contained in:
HuYingzhuo(hugo/hyzboy) 2023-03-21 21:37:03 +08:00
parent 8bf1ad2a46
commit 44620abc21
4 changed files with 39 additions and 2 deletions

View File

@ -98,7 +98,7 @@ private:
bool InitAutoMaterial()
{
auto *mci=mtl::CreateVertexColor2DNDC();
MaterialCreateInfo *mci=mtl::CreateVertexColor2DNDC();
material_instance=db->CreateMaterialInstance(mci,&vil_config);

View File

@ -47,6 +47,8 @@ class RenderResource
IDResManage<TextureID, Texture> rm_textures; ///<纹理合集
IDResManage<RenderableID, Renderable> rm_renderables; ///<渲染实例集合集
Map<AnsiString,DeviceBuffer *> global_buffer_map; ///<全局UBO
public:
RenderResource(GPUDevice *dev):device(dev){}
@ -63,6 +65,14 @@ public: //Add
TextureID Add(Texture * t ){return rm_textures.Add(t);}
RenderableID Add(Renderable * r ){return rm_renderables.Add(r);}
public: //全局属性
void SetGlobal(const AnsiString &name,DeviceBuffer *buf);
DeviceBuffer *GetGlobal(const AnsiString &name);
void Free(DeviceBuffer *);
public: // VBO/VAO
VBO *CreateVBO(VkFormat format,uint32_t count,const void *data,SharingMode sm=SharingMode::Exclusive);

View File

@ -5,6 +5,33 @@
#include<hgl/graph/VKVertexAttribBuffer.h>
VK_NAMESPACE_BEGIN
void RenderResource::SetGlobal(const AnsiString &name,DeviceBuffer *buf)
{
if(!buf)return;
if(name.IsEmpty())return;
global_buffer_map.Add(name,buf);
}
DeviceBuffer *RenderResource::GetGlobal(const AnsiString &name)
{
if(name.IsEmpty())return(nullptr);
DeviceBuffer *buf;
if(global_buffer_map.Get(name,buf))
return buf;
else
return nullptr;
}
void RenderResource::Free(DeviceBuffer *buf)
{
rm_buffers.Release(buf);
global_buffer_map.DeleteByValue(buf);
}
VBO *RenderResource::CreateVBO(VkFormat format,uint32_t count,const void *data,SharingMode sharing_mode)
{
VBO *vb=device->CreateVBO(format,count,data,sharing_mode);