PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
Buffer.hpp
1#pragma once
2
3#include "PixelBullet/Graphics/Descriptors/DescriptorSet.hpp"
4
5namespace PixelBullet
6{
10 class Buffer
11 {
12 public:
13 enum class Status
14 {
15 Reset,
16 Changed,
17 Normal
18 };
19
28 Buffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties,
29 const void* data = nullptr);
30 virtual ~Buffer();
31
32 void MapMemory(void** data) const;
33 void UnmapMemory() const;
34
35 VkDeviceSize GetSize() const
36 {
37 return m_Size;
38 }
39 const VkBuffer& GetBuffer() const
40 {
41 return m_Buffer;
42 }
43 const VkDeviceMemory& GetBufferMemory() const
44 {
45 return m_BufferMemory;
46 }
47
48 static uint32_t FindMemoryType(uint32_t typeFilter, const VkMemoryPropertyFlags& requiredProperties);
49
50 static void InsertBufferMemoryBarrier(const CommandBuffer& commandBuffer, const VkBuffer& buffer,
51 VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask,
52 VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask,
53 VkDeviceSize offset = 0, VkDeviceSize size = VK_WHOLE_SIZE);
54
55 protected:
56 VkDeviceSize m_Size;
57 VkBuffer m_Buffer = VK_NULL_HANDLE;
58 VkDeviceMemory m_BufferMemory = VK_NULL_HANDLE;
59 };
60} // namespace PixelBullet
Interface that represents a buffer.
Definition Buffer.hpp:11
Buffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, const void *data=nullptr)
Definition Buffer.cpp:12
Class that represents a command buffer.
Definition CommandBuffer.hpp:15