vOOlkan
An object oriented approach to Vulkan
StagingBuffer.h
Go to the documentation of this file.
1#ifndef VULKAN_STAGINGBUFFER
2#define VULKAN_STAGINGBUFFER
3
4#include <vulkan/vulkan.h>
5
6#include "LogicalDevice.h"
7#include "PhysicalDevice.h"
8#include "VulkanException.h"
9#include "Buffer.h"
10
11
12namespace Vulkan::Buffers { class StagingBuffer; }
13
15public:
16
17 StagingBuffer(const LogicalDevice& virtualGpu, const PhysicalDevice& realGpu, size_t size) : Buffer(virtualGpu, realGpu, size, VK_BUFFER_USAGE_TRANSFER_SRC_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, VK_MEMORY_PROPERTY_HOST_COHERENT_BIT) {
18
19 }
20
21
22
23 void fillBuffer(unsigned char* data, size_t size) {
24 void* rawData;
25 vkMapMemory(+virtualGpu, bufferMemory, 0, size, 0, &rawData);
26 memcpy(rawData, data, size);
27 vkUnmapMemory(+virtualGpu, bufferMemory);
28 }
29
30
31};
32
33#endif
Definition: Buffer.h:14
const size_t size
Definition: Buffer.h:112
const LogicalDevice & virtualGpu
Definition: Buffer.h:111
VkDeviceMemory bufferMemory
Definition: Buffer.h:110
Definition: StagingBuffer.h:14
StagingBuffer(const LogicalDevice &virtualGpu, const PhysicalDevice &realGpu, size_t size)
Definition: StagingBuffer.h:17
void fillBuffer(unsigned char *data, size_t size)
Definition: StagingBuffer.h:23
A logical device is an abstraction of the physical GPU which we can mainly use to send commands.
Definition: LogicalDevice.h:15
Represents the GPU (or any other device) that will be used with Vulkan to perform computer graphics.
Definition: PhysicalDevice.h:17
Definition: Buffer.h:12