sandbox
Loading...
Searching...
No Matches
uniform_buffer.hpp
1#ifndef LIBSBX_GRAPHICS_BUFFERS_UNIFORM_BUFFER_HPP_
2#define LIBSBX_GRAPHICS_BUFFERS_UNIFORM_BUFFER_HPP_
3
4#include <vulkan/vulkan.hpp>
5
6#include <libsbx/memory/observer_ptr.hpp>
7
8#include <libsbx/graphics/buffers/buffer.hpp>
9
10#include <libsbx/graphics/descriptor/descriptor.hpp>
11
12namespace sbx::graphics {
13
14class uniform_buffer : public buffer_base, public descriptor {
15
16public:
17
18 uniform_buffer(VkDeviceSize size, memory::observer_ptr<void> data = nullptr);
19
20 ~uniform_buffer() override;
21
22 auto mapped_memory() const noexcept -> memory::observer_ptr<void>;
23
24 auto update(memory::observer_ptr<const void> data, VkDeviceSize size, VkDeviceSize offset = 0) -> void;
25
26 auto write_descriptor_set(std::uint32_t binding, VkDescriptorType descriptor_type) const noexcept -> graphics::write_descriptor_set override;
27
28 static auto create_descriptor_set_layout_binding(std::uint32_t binding, VkDescriptorType descriptor_type, VkShaderStageFlags stage_flags) noexcept -> VkDescriptorSetLayoutBinding;
29
30private:
31
32 memory::observer_ptr<void> _mapped_memory;
33
34}; // class uniform_buffer
35
36} // namespace sbx::graphics
37
38#endif // LIBSBX_GRAPHICS_BUFFERS_UNIFORM_BUFFER_HPP_
Definition: buffer.hpp:16
Definition: descriptor.hpp:33
Definition: uniform_buffer.hpp:14
Definition: descriptor.hpp:12
A non-owning pointer that can be used to observe the value of a pointer.
Definition: observer_ptr.hpp:27