From adf4897650af51089d73a1e145639637da9f240f Mon Sep 17 00:00:00 2001 From: HuYingzhuo Date: Thu, 25 Apr 2019 14:33:15 +0800 Subject: [PATCH] =?UTF-8?q?Buffer=E6=8F=90=E4=BE=9BWrite=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E6=96=B9=E4=BE=BF=E5=86=99=E5=85=A5=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/Vulkan/VKBuffer.cpp | 14 ++++++++++++++ example/Vulkan/VKBuffer.h | 3 +++ 2 files changed, 17 insertions(+) diff --git a/example/Vulkan/VKBuffer.cpp b/example/Vulkan/VKBuffer.cpp index 2358400a..ccf1ba87 100644 --- a/example/Vulkan/VKBuffer.cpp +++ b/example/Vulkan/VKBuffer.cpp @@ -27,4 +27,18 @@ void Buffer::Unmap() { vkUnmapMemory(device,buf.memory); } + +bool Buffer::Write(const void *ptr,uint32_t start,uint32_t size) +{ + if(!ptr)return(false); + + void *dst; + + if(vkMapMemory(device,buf.memory,start,size,0,&dst)!=VK_SUCCESS) + return(false); + + memcpy(dst,ptr,size); + vkUnmapMemory(device,buf.memory); + return(true); +} VK_NAMESPACE_END diff --git a/example/Vulkan/VKBuffer.h b/example/Vulkan/VKBuffer.h index 6fe4166b..9ae7c9f8 100644 --- a/example/Vulkan/VKBuffer.h +++ b/example/Vulkan/VKBuffer.h @@ -40,6 +40,9 @@ public: virtual uint8_t *Map(uint32_t start=0,uint32_t size=0); void Unmap(); + + bool Write(const void *ptr,uint32_t start,uint32_t size); + bool Write(const void *ptr){return Write(ptr,0,buf.info.range);} };//class Buffer class VertexBuffer:public Buffer