11#include <vulkan/vulkan.h>
17struct DescriptorBinding
19 VkDescriptorType mType = VK_DESCRIPTOR_TYPE_MAX_ENUM;
20 void* mObject =
nullptr;
24 std::vector<Image*> mImageArray;
26 int32_t mBinding = -1;
33 static DescriptorSet Begin(
const char* name =
"");
36 DescriptorSet& WriteImage(int32_t binding, Image* image);
37 DescriptorSet& WriteImageArray(int32_t binding,
const std::vector<Image*>& imageArray);
38 DescriptorSet& WriteUniformBuffer(int32_t binding, UniformBuffer* uniformBuffer);
39 DescriptorSet& WriteUniformBuffer(int32_t binding,
const UniformBlock& block);
40 DescriptorSet& WriteStorageBuffer(int32_t binding, Buffer* storageBuffer);
41 DescriptorSet& WriteStorageImage(int32_t binding, Image* storageImage);
43 DescriptorSet& Build();
45 void Bind(VkCommandBuffer cb, uint32_t index);
47 VkDescriptorSet
Get()
const;
48 VkDescriptorSetLayout GetLayout()
const;
52 void UpdateDescriptors();
54 std::vector<DescriptorBinding> mBindings;
58 VkDescriptorSet mDescriptorSet = VK_NULL_HANDLE;
59 VkDescriptorSetLayout mLayout = VK_NULL_HANDLE;
60 uint32_t mFrameBuilt = UINT_MAX;
61 const char* mName =
nullptr;