1#ifndef LIBSBX_GRAPHICS_BUFFERS_STORAGE_HANDLER_HPP_
2#define LIBSBX_GRAPHICS_BUFFERS_STORAGE_HANDLER_HPP_
10#include <libsbx/memory/observer_ptr.hpp>
12#include <libsbx/graphics/pipeline/shader.hpp>
14#include <libsbx/graphics/buffers/storage_buffer.hpp>
16namespace sbx::graphics {
22 storage_handler(VkBufferUsageFlags additional_usage = 0u,
const std::optional<shader::uniform_block>& uniform_block = std::nullopt);
24 template<
typename Type>
25 auto push(std::span<const Type> buffer) -> void;
27 template<
typename Type>
28 auto push(
const Type&
object, std::size_t size, std::size_t offset) -> void;
30 template<
typename Type>
31 auto push(
const std::string& uniform_name,
const Type&
object, std::size_t size = 0) -> void;
35 auto update(
const std::optional<shader::uniform_block>& uniform_block) -> bool;
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: storage_buffer.hpp:14
Definition: storage_handler.hpp:18