Lugdunum  0.1.0
DescriptorSet.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <memory>
4 #include <vector>
5 
7 
8 namespace lug {
9 namespace Graphics {
10 namespace Vulkan {
11 namespace API {
12 
13 class DescriptorPool;
14 class Device;
15 
16 namespace Builder {
17 
19 public:
21 
22  DescriptorSet(const DescriptorSet&) = delete;
23  DescriptorSet(DescriptorSet&&) = delete;
24 
25  DescriptorSet& operator=(const DescriptorSet&) = delete;
27 
28  ~DescriptorSet() = default;
29 
30  // Setters
31  void setDescriptorSetLayouts(const std::vector<VkDescriptorSetLayout>& descriptorSetLayouts);
32 
33  // Build methods
34  bool build(API::DescriptorSet& instance, VkResult* returnResult = nullptr);
35  std::unique_ptr<API::DescriptorSet> build(VkResult* returnResult = nullptr);
36 
37  bool build(std::vector<API::DescriptorSet>& descriptorSets, VkResult* returnResult = nullptr);
38  std::vector<std::unique_ptr<API::DescriptorSet>> build(uint32_t count, VkResult* returnResult = nullptr);
39 
40 private:
42 
44  std::vector<VkDescriptorSetLayout> _descriptorSetLayouts{};
45 };
46 
48 
49 } // Builder
50 } // API
51 } // Vulkan
52 } // Graphics
53 } // lug
DescriptorSet & operator=(const DescriptorSet &)=delete
std::vector< VkDescriptorSetLayout > _descriptorSetLayouts
void setDescriptorSetLayouts(const std::vector< VkDescriptorSetLayout > &descriptorSetLayouts)
bool build(API::DescriptorSet &instance, VkResult *returnResult=nullptr)
DescriptorSet(const API::Device &device, const API::DescriptorPool &descriptorPool)