ULRE/inc/hgl/graph/GPUDataArray.h

78 lines
1.7 KiB
C++

#ifndef HGL_GRAPH_GPU_DATA_ARRAY_INCLUDE
#define HGL_GRAPH_GPU_DATA_ARRAY_INCLUDE
#include<hgl/graph/VKBuffer.h>
namespace hgl
{
namespace graph
{
/**
* GPU数据阵列
**/
class GPUDataArray
{
uint32_t alloc_count;
uint32_t count;
uint32_t item_size;
GPUBuffer * buf_gpu;
uint8 * buf_cpu;
uint32_t * offset;
public:
GPUDataArray(const uint32_t s=0)
{
alloc_count=0;
count=0;
item_size=s;
buf_gpu=nullptr;
buf_cpu=nullptr;
offset=nullptr;
}
virtual ~GPUDataArray()
{
Clear();
}
virtual void Clear()
{
alloc_count=0;
count=0;
if(buf_gpu)
{
buf_gpu->Unmap();
delete buf_gpu;
buf_gpu=nullptr;
}
SAFE_CLEAR_ARRAY(buf_cpu);
SAFE_CLEAR_ARRAY(offset);
}
bool Init(const uint32_t c,const uint32_t s=0)
{
if(s
&&item_size<=0)
{
if(s>HGL_SIZE_1KB*64)
return(false);
item_size=s;
}
count=c;
if(count*item_size<=0)
return(false);
buf_cpu=new
}
};//class GPUDataArray
}//namespace graph
}//namespace hgl
#endif//HGL_GRAPH_GPU_DATA_ARRAY_INCLUDE