Lugdunum  0.1.0
DescriptorSet.hpp
Go to the documentation of this file.
1 #pragma once
2 
5 
6 namespace lug {
7 namespace Graphics {
8 namespace Vulkan {
9 namespace API {
10 
11 namespace Builder {
12 class DescriptorSet;
13 } // Builder
14 
15 class Buffer;
16 class Device;
17 
19  friend class Builder::DescriptorSet;
20 
21 public:
22  DescriptorSet() = default;
23 
24  DescriptorSet(const DescriptorSet&) = delete;
26 
27  DescriptorSet& operator=(const DescriptorSet&) = delete;
29 
30  ~DescriptorSet();
31 
32  explicit operator VkDescriptorSet() const {
33  return _descriptorSet;
34  }
35 
44  void updateBuffers(
45  uint32_t dstBinding,
46  uint32_t dstArrayElement,
47  VkDescriptorType descriptorType,
48  const std::vector<VkDescriptorBufferInfo>& bufferInfos
49  ) const;
50 
59  void updateImages(
60  uint32_t dstBinding,
61  uint32_t dstArrayElement,
62  VkDescriptorType descriptorType,
63  const std::vector<VkDescriptorImageInfo>& imageInfos
64  ) const;
65 
66  void destroy();
67 
68 private:
69  explicit DescriptorSet(VkDescriptorSet descriptorSet, const Device* device);
70 
71 private:
72  VkDescriptorSet _descriptorSet{VK_NULL_HANDLE};
73  const Device* _device{nullptr};
74 };
75 
76 } // API
77 } // Vulkan
78 } // Graphics
79 } // lug
#define LUG_GRAPHICS_API
Definition: Export.hpp:11