2#ifndef LIBSBX_GRAPHICS_BUFFERS_STORAGE_HANDLER_HPP_
3#define LIBSBX_GRAPHICS_BUFFERS_STORAGE_HANDLER_HPP_
9#include <libsbx/memory/observer_ptr.hpp>
11#include <libsbx/graphics/pipeline/shader.hpp>
13#include <libsbx/graphics/buffers/storage_buffer.hpp>
15namespace sbx::graphics {
21 storage_handler(VkBufferUsageFlags additional_usage = 0u,
const std::optional<shader::uniform_block>& uniform_block = std::nullopt);
23 template<
typename Type>
24 auto push(std::span<const Type>
buffer) -> void;
26 template<
typename Type>
27 auto push(
const Type&
object, std::size_t size, std::size_t offset) -> void;
29 template<
typename Type>
30 auto push(
const std::string& uniform_name,
const Type&
object, std::size_t size = 0) -> void;
34 auto update(
const std::optional<shader::uniform_block>& uniform_block) -> bool;
36 auto buffer_address()
const noexcept -> std::uint64_t;
40 std::optional<shader::uniform_block> _uniform_block;
41 std::unique_ptr<graphics::storage_buffer> _storage_buffer;
42 VkBufferUsageFlags _additional_usage;
48#include <libsbx/graphics/buffers/storage_handler.ipp>
Definition: buffer.hpp:21
Definition: storage_buffer.hpp:17
Definition: storage_handler.hpp:17