1#ifndef LIBSBX_GRAPHICS_BUFFERS_UNIFORM_HANDLER_HPP_
2#define LIBSBX_GRAPHICS_BUFFERS_UNIFORM_HANDLER_HPP_
9#include <libsbx/memory/observer_ptr.hpp>
11#include <libsbx/graphics/pipeline/shader.hpp>
13#include <libsbx/graphics/buffers/uniform_buffer.hpp>
15namespace sbx::graphics {
21 uniform_handler(
const std::optional<shader::uniform_block>& uniform_block = std::nullopt);
23 template<
typename Type>
24 auto push(
const Type&
object, std::size_t size, std::size_t offset) -> void;
26 template<
typename Type>
27 auto push(
const std::string& uniform_name,
const Type&
object, std::size_t size = 0) -> void;
31 auto update(
const std::optional<shader::uniform_block>& uniform_block) -> bool;
35 std::optional<shader::uniform_block> _uniform_block;
36 std::unique_ptr<graphics::uniform_buffer> _uniform_buffer;
42#include <libsbx/graphics/buffers/uniform_handler.ipp>