PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
Descriptor.hpp
1#pragma once
2
3#include <volk.h>
4
5#include <cstdint>
6#include <memory>
7#include <optional>
8
9namespace PixelBullet
10{
12 {
13 public:
14 OffsetSize(uint32_t offset, uint32_t size)
15 : m_Offset(offset)
16 , m_Size(size)
17 {
18 }
19
20 uint32_t GetOffset() const
21 {
22 return m_Offset;
23 }
24 uint32_t GetSize() const
25 {
26 return m_Size;
27 }
28
29 bool operator==(const OffsetSize& rhs) const
30 {
31 return m_Offset == rhs.m_Offset && m_Size == rhs.m_Size;
32 }
33
34 bool operator!=(const OffsetSize& rhs) const
35 {
36 return !operator==(rhs);
37 }
38
39 private:
40 uint32_t m_Offset;
41 uint32_t m_Size;
42 };
43
45 {
46 public:
47 WriteDescriptorSet(const VkWriteDescriptorSet& writeDescriptorSet, const VkDescriptorImageInfo& imageInfo)
48 : m_WriteDescriptorSet(writeDescriptorSet)
49 , m_ImageInfo(std::make_unique<VkDescriptorImageInfo>(imageInfo))
50 {
51 this->m_WriteDescriptorSet.descriptorCount = 1;
52 this->m_WriteDescriptorSet.pImageInfo = m_ImageInfo ? m_ImageInfo.get() : nullptr;
53 }
54
55 WriteDescriptorSet(const VkWriteDescriptorSet& writeDescriptorSet, const VkDescriptorBufferInfo& bufferInfo)
56 : m_WriteDescriptorSet(writeDescriptorSet)
57 , m_BufferInfo(std::make_unique<VkDescriptorBufferInfo>(bufferInfo))
58 {
59 this->m_WriteDescriptorSet.descriptorCount = 1;
60 this->m_WriteDescriptorSet.pBufferInfo = m_BufferInfo ? m_BufferInfo.get() : nullptr;
61 }
62
63 const VkWriteDescriptorSet& GetWriteDescriptorSet() const
64 {
65 return m_WriteDescriptorSet;
66 }
67
68 private:
69 VkWriteDescriptorSet m_WriteDescriptorSet;
70 std::unique_ptr<VkDescriptorImageInfo> m_ImageInfo;
71 std::unique_ptr<VkDescriptorBufferInfo> m_BufferInfo;
72 };
73
75 {
76 public:
77 Descriptor() = default;
78 virtual ~Descriptor() = default;
79
80 virtual WriteDescriptorSet GetWriteDescriptor(uint32_t binding, VkDescriptorType descriptorType,
81 const std::optional<OffsetSize>& offsetSize) const = 0;
82 };
83} // namespace PixelBullet
Definition Descriptor.hpp:75
Definition Descriptor.hpp:12
Definition Descriptor.hpp:45