diff --git a/inc/hgl/graph/VKArrayBuffer.h b/inc/hgl/graph/VKArrayBuffer.h index 39e6c581..c92b9bf4 100644 --- a/inc/hgl/graph/VKArrayBuffer.h +++ b/inc/hgl/graph/VKArrayBuffer.h @@ -26,9 +26,14 @@ namespace hgl uint8 * buf_cpu; uint32_t * offset; ///<数据偏移地址 + private: + + GPUArrayBuffer(GPUDevice *,const uint32_t s=0,const uint32_t c=0); + + friend class GPUDevice; + public: - GPUArrayBuffer(GPUDevice *,const uint32_t s=0,const uint32_t c=0); virtual ~GPUArrayBuffer(); void Clear(); ///<清空缓冲区 diff --git a/src/SceneGraph/Vulkan/VKDeviceBuffer.cpp b/src/SceneGraph/Vulkan/VKDeviceBuffer.cpp index cb1bc111..5741d87e 100644 --- a/src/SceneGraph/Vulkan/VKDeviceBuffer.cpp +++ b/src/SceneGraph/Vulkan/VKDeviceBuffer.cpp @@ -1,5 +1,6 @@ #include -#include +#include +#include VK_NAMESPACE_BEGIN bool GPUDevice::CreateBuffer(GPUBufferData *buf,VkBufferUsageFlags buf_usage,VkDeviceSize size,const void *data,SharingMode sharing_mode) diff --git a/src/SceneGraph/Vulkan/VKMemoryAllocator.cpp b/src/SceneGraph/Vulkan/VKMemoryAllocator.cpp index 0413257e..2689c49c 100644 --- a/src/SceneGraph/Vulkan/VKMemoryAllocator.cpp +++ b/src/SceneGraph/Vulkan/VKMemoryAllocator.cpp @@ -17,7 +17,11 @@ VKMemoryAllocator::VKMemoryAllocator(GPUDevice *d,const uint32_t flags) VKMemoryAllocator::~VKMemoryAllocator() { - SAFE_CLEAR(gpu_buffer); + if(gpu_buffer) + { + gpu_buffer->Unmap(); + delete gpu_buffer; + } } bool VKMemoryAllocator::Alloc()