changed GPUArrayBuffer to non-template

This commit is contained in:
HuYingzhuo(hugo/hyzboy) 2023-03-22 21:18:46 +08:00
parent 5d9aab7dda
commit 5f830b8d57

View File

@ -13,12 +13,15 @@ namespace hgl
* GPU数据阵列缓冲区<br> * GPU数据阵列缓冲区<br>
* instance等 * instance等
*/ */
template<typename T> class GPUArrayBuffer class GPUArrayBuffer
{ {
protected: protected:
GPUDevice *device; GPUDevice *device;
VkBufferUsageFlags buffer_usage_flags; VkBufferUsageFlags buffer_usage_flags;
uint item_length; ///<单个数据长度
VKMemoryAllocator *vk_ma; VKMemoryAllocator *vk_ma;
uint32_t ubo_offset_alignment; uint32_t ubo_offset_alignment;
@ -27,15 +30,16 @@ namespace hgl
public: public:
GPUArrayBuffer(GPUDevice *dev,VkBufferUsageFlags flags) GPUArrayBuffer(GPUDevice *dev,VkBufferUsageFlags flags,const uint il)
{ {
device=dev; device=dev;
buffer_usage_flags=flags; buffer_usage_flags=flags;
item_length=il;
{ {
ubo_offset_alignment=device->GetUBOAlign(); ubo_offset_alignment=device->GetUBOAlign();
const uint32_t unit_size=hgl_align<uint32_t>(sizeof(T),ubo_offset_alignment); const uint32_t unit_size=hgl_align<uint32_t>(item_length,ubo_offset_alignment);
vk_ma=new VKMemoryAllocator(device,buffer_usage_flags,unit_size); // construct function is going to set AllocUnitSize by minUniformOffsetAlignment 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); MemoryBlock *mb=new MemoryBlock(vk_ma);
@ -77,9 +81,9 @@ namespace hgl
coll->Clear(); 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) void Flush(const uint32 count)