sandbox
Loading...
Searching...
No Matches
descriptor.hpp
1// SPDX-License-Identifier: MIT
2#ifndef LIBSBX_GRAPHICS_DESCRIPTOR_DESCRIPTOR_HPP_
3#define LIBSBX_GRAPHICS_DESCRIPTOR_DESCRIPTOR_HPP_
4
5#include <variant>
6#include <memory>
7#include <cinttypes>
8
9#include <vulkan/vulkan.hpp>
10
11namespace sbx::graphics {
12
14
15public:
16
17 write_descriptor_set(const VkWriteDescriptorSet& write_descriptor_set, const std::vector<VkDescriptorImageInfo>& descriptor_infos) noexcept;
18
19 write_descriptor_set(const VkWriteDescriptorSet& write_descriptor_set, const VkDescriptorBufferInfo& descriptor_info) noexcept;
20
21 auto handle() const noexcept -> const VkWriteDescriptorSet&;
22
23 operator const VkWriteDescriptorSet&() const noexcept;
24
25 operator bool() const noexcept {
26 return _write_descriptor_set.descriptorCount > 0u;
27 }
28
29private:
30
31 VkWriteDescriptorSet _write_descriptor_set;
32 // std::variant<VkDescriptorImageInfo, VkDescriptorBufferInfo> _descriptor_info;
33 std::vector<VkDescriptorImageInfo> _descriptor_image_infos;
34 std::unique_ptr<VkDescriptorBufferInfo> _descriptor_buffer_info;
35
36}; // class write_descriptor_set
37
39
40public:
41
42 descriptor() = default;
43
44 virtual ~descriptor() = default;
45
46 virtual auto write_descriptor_set(std::uint32_t binding, VkDescriptorType descriptor_type) const noexcept -> graphics::write_descriptor_set = 0;
47
48}; // class descriptor
49
50} // namespace sbx::graphics
51
52#endif // LIBSBX_GRAPHICS_DESCRIPTOR_DESCRIPTOR_HPP_
Definition: descriptor.hpp:38
Definition: descriptor.hpp:13