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