From 5f830b8d57f21b7fbea156038f0c151486bfee2c Mon Sep 17 00:00:00 2001 From: "HuYingzhuo(hugo/hyzboy)" Date: Wed, 22 Mar 2023 21:18:46 +0800 Subject: [PATCH] changed GPUArrayBuffer to non-template --- inc/hgl/graph/VKArrayBuffer.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/inc/hgl/graph/VKArrayBuffer.h b/inc/hgl/graph/VKArrayBuffer.h index b89e29d7..690493ca 100644 --- a/inc/hgl/graph/VKArrayBuffer.h +++ b/inc/hgl/graph/VKArrayBuffer.h @@ -13,12 +13,15 @@ namespace hgl * GPU数据阵列缓冲区
* 它用于储存多份相同格式的数据,常用于多物件渲染,instance等 */ - template class GPUArrayBuffer + class GPUArrayBuffer { protected: GPUDevice *device; VkBufferUsageFlags buffer_usage_flags; + + uint item_length; ///<单个数据长度 + VKMemoryAllocator *vk_ma; uint32_t ubo_offset_alignment; @@ -27,15 +30,16 @@ namespace hgl public: - GPUArrayBuffer(GPUDevice *dev,VkBufferUsageFlags flags) + GPUArrayBuffer(GPUDevice *dev,VkBufferUsageFlags flags,const uint il) { device=dev; buffer_usage_flags=flags; + item_length=il; { ubo_offset_alignment=device->GetUBOAlign(); - const uint32_t unit_size=hgl_align(sizeof(T),ubo_offset_alignment); + const uint32_t unit_size=hgl_align(item_length,ubo_offset_alignment); vk_ma=new VKMemoryAllocator(device,buffer_usage_flags,unit_size); // construct function is going to set AllocUnitSize by minUniformOffsetAlignment MemoryBlock *mb=new MemoryBlock(vk_ma); @@ -77,9 +81,9 @@ namespace hgl coll->Clear(); } - T *Map(const uint32 start,const uint32 count) + void *Map(const uint32 start,const uint32 count) { - return (T *)(coll->Map(start,count)); + return coll->Map(start,count); } void Flush(const uint32 count)