1#ifndef LIBSBX_GRAPHICS_BUFFERS_STORAGE_HANDLER_HPP_
2#define LIBSBX_GRAPHICS_BUFFERS_STORAGE_HANDLER_HPP_
8#include <libsbx/memory/observer_ptr.hpp>
10#include <libsbx/graphics/pipeline/shader.hpp>
12#include <libsbx/graphics/buffers/storage_buffer.hpp>
14namespace sbx::graphics {
20 storage_handler(VkBufferUsageFlags additional_usage = 0u,
const std::optional<shader::uniform_block>& uniform_block = std::nullopt);
22 template<
typename Type>
23 auto push(std::span<const Type>
buffer) -> void;
25 template<
typename Type>
26 auto push(
const Type&
object, std::size_t size, std::size_t offset) -> void;
28 template<
typename Type>
29 auto push(
const std::string& uniform_name,
const Type&
object, std::size_t size = 0) -> void;
33 auto update(
const std::optional<shader::uniform_block>& uniform_block) -> bool;
35 auto buffer_address()
const noexcept -> std::uint64_t;
39 std::optional<shader::uniform_block> _uniform_block;
40 std::unique_ptr<graphics::storage_buffer> _storage_buffer;
41 VkBufferUsageFlags _additional_usage;
47#include <libsbx/graphics/buffers/storage_handler.ipp>
Definition: buffer.hpp:20
Definition: storage_buffer.hpp:16
Definition: storage_handler.hpp:16