added VKBufferMap.cpp/.h
This commit is contained in:
parent
8788b3dd6a
commit
16ae849809
@ -1,11 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include<hgl/graph/VertexAttribDataAccess.h>
|
||||
#include<hgl/graph/VKBufferMap.h>
|
||||
#include<hgl/graph/VKShaderModule.h>
|
||||
#include<hgl/graph/VKVertexAttribBuffer.h>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
|
||||
/**
|
||||
* 可绘制原始图形创建器
|
||||
*/
|
||||
@ -232,4 +231,4 @@ using IBMapU8=IBMap<uint8>;
|
||||
using IBMapU16=IBMap<uint16>;
|
||||
using IBMapU32=IBMap<uint32>;
|
||||
|
||||
VK_NAMESPACE_END
|
||||
VK_NAMESPACE_END
|
||||
|
27
inc/hgl/graph/VKBufferMap.h
Normal file
27
inc/hgl/graph/VKBufferMap.h
Normal file
@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
|
||||
#include<hgl/graph/VK.h>
|
||||
#include<hgl/graph/VertexAttribDataAccess.h>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
class VKBufferMap
|
||||
{
|
||||
protected:
|
||||
|
||||
DeviceBuffer *buffer;
|
||||
VkDeviceSize offset;
|
||||
VkDeviceSize size;
|
||||
|
||||
void *map_ptr;
|
||||
|
||||
public:
|
||||
|
||||
VKBufferMap(DeviceBuffer *buf_ptr,VkDeviceSize off,VkDeviceSize s);
|
||||
virtual ~VKBufferMap();
|
||||
|
||||
const bool IsValid()const{ return buffer; }
|
||||
|
||||
void *Map();
|
||||
void Unmap();
|
||||
};//class VKBufferMap
|
||||
VK_NAMESPACE_END
|
@ -121,9 +121,11 @@ SET(VK_MEMORY_SOURCE ${SG_INCLUDE_PATH}/VKMemory.h
|
||||
${SG_INCLUDE_PATH}/VKBuffer.h
|
||||
${SG_INCLUDE_PATH}/VKIndexBuffer.h
|
||||
${SG_INCLUDE_PATH}/VKArrayBuffer.h
|
||||
${SG_INCLUDE_PATH}/VKBufferMap.h
|
||||
Vulkan/VKMemory.cpp
|
||||
Vulkan/VKMemoryAllocator.cpp
|
||||
Vulkan/VKBuffer.cpp
|
||||
Vulkan/VKBufferMap.cpp
|
||||
Vulkan/VKArrayBuffer.cpp
|
||||
)
|
||||
|
||||
|
43
src/SceneGraph/Vulkan/VKBufferMap.cpp
Normal file
43
src/SceneGraph/Vulkan/VKBufferMap.cpp
Normal file
@ -0,0 +1,43 @@
|
||||
#include<hgl/graph/VKBufferMap.h>
|
||||
#include<hgl/graph/VKVertexAttribBuffer.h>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
|
||||
VKBufferMap::VKBufferMap(DeviceBuffer *buf,VkDeviceSize off,VkDeviceSize s)
|
||||
{
|
||||
buffer=buf;
|
||||
offset=off;
|
||||
size=s;
|
||||
|
||||
map_ptr=nullptr;
|
||||
}
|
||||
|
||||
VKBufferMap::~VKBufferMap()
|
||||
{
|
||||
if(map_ptr)
|
||||
buffer->DeviceBuffer::Unmap();
|
||||
}
|
||||
|
||||
void *VKBufferMap::Map()
|
||||
{
|
||||
if(map_ptr)
|
||||
return(map_ptr);
|
||||
|
||||
if(!buffer)
|
||||
return(nullptr);
|
||||
|
||||
map_ptr=buffer->DeviceBuffer::Map(offset,size);
|
||||
return map_ptr;
|
||||
|
||||
}
|
||||
|
||||
void VKBufferMap::Unmap()
|
||||
{
|
||||
if(map_ptr)
|
||||
{
|
||||
buffer->DeviceBuffer::Unmap();
|
||||
map_ptr=nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
VK_NAMESPACE_END
|
Loading…
x
Reference in New Issue
Block a user