Vulkan Schnee 0.0.1
High-performance rendering engine
Loading...
Searching...
No Matches
LayoutBindingsBuilder.h
Go to the documentation of this file.
1#pragma once
3
4namespace EngineCore {
5
6 struct LayoutBinding {
7 void add(VkDescriptorSetLayoutBinding binding, VkDescriptorBindingFlags flag) {
8 bindings.push_back(binding);
9 flags.push_back(flag);
10 }
11
12 [[nodiscard]] std::vector<VkDescriptorSetLayoutBinding> getBindings() const { return bindings; }
13 [[nodiscard]] std::vector<VkDescriptorBindingFlags> getFlags() const { return flags; }
14
15 private:
16 std::vector<VkDescriptorSetLayoutBinding> bindings;
17 std::vector<VkDescriptorBindingFlags> flags;
18 };
19
20 // TODO: Documentation
22 public:
24
34 [[nodiscard]] LayoutBindingsBuilder& addUniformBuffer(uint32_t binding, VkShaderStageFlags stageFlags);
44 [[nodiscard]] LayoutBindingsBuilder& addStorageBuffer(uint32_t binding, VkShaderStageFlags stageFlags);
54 [[nodiscard]] LayoutBindingsBuilder& addTextureBuffer(uint32_t binding, VkShaderStageFlags stageFlags);
55
62 void build();
63
71 [[nodiscard]] const std::vector<VkDescriptorSetLayoutBinding>& getBindings() const { return bindings; }
72
80 [[nodiscard]] const std::vector<VkDescriptorBindingFlags>& getFlags() const { return flags; }
81
82 private:
83
84 std::vector<VkDescriptorSetLayoutBinding> bindings;
85 std::vector<VkDescriptorBindingFlags> flags;
86
87 };
88}
std::vector< VkDescriptorBindingFlags > flags
LayoutBindingsBuilder & addTextureBuffer(uint32_t binding, VkShaderStageFlags stageFlags)
Adds a texture buffer for binding.
LayoutBindingsBuilder & addUniformBuffer(uint32_t binding, VkShaderStageFlags stageFlags)
Adds a uniform buffer for binding.
void build()
Decorative. Finishes the nodiscard chain of added buffers.
const std::vector< VkDescriptorBindingFlags > & getFlags() const
Getter for the descriptor flags.
const std::vector< VkDescriptorSetLayoutBinding > & getBindings() const
Getter for the descriptor bindings.
std::vector< VkDescriptorSetLayoutBinding > bindings
LayoutBindingsBuilder & addStorageBuffer(uint32_t binding, VkShaderStageFlags stageFlags)
Adds a storage buffer to for binding.
Log category system implementation.
std::vector< VkDescriptorSetLayoutBinding > getBindings() const
std::vector< VkDescriptorBindingFlags > getFlags() const
std::vector< VkDescriptorSetLayoutBinding > bindings
std::vector< VkDescriptorBindingFlags > flags
void add(VkDescriptorSetLayoutBinding binding, VkDescriptorBindingFlags flag)