1#ifndef LIBSBX_GRAPHICS_BUFFERS_UNIFORM_HANDLER_HPP_
2#define LIBSBX_GRAPHICS_BUFFERS_UNIFORM_HANDLER_HPP_
7#include <libsbx/memory/observer_ptr.hpp>
9#include <libsbx/graphics/pipeline/shader.hpp>
11#include <libsbx/graphics/buffers/uniform_buffer.hpp>
13namespace sbx::graphics {
19 uniform_handler(
const std::optional<shader::uniform_block>& uniform_block = std::nullopt);
21 template<
typename Type>
22 auto push(
const Type&
object, std::size_t size, std::size_t offset) -> void;
24 template<
typename Type>
25 auto push(
const std::string& uniform_name,
const Type&
object, std::size_t size = 0) -> void;
29 auto update(
const std::optional<shader::uniform_block>& uniform_block) -> bool;
33 std::optional<shader::uniform_block> _uniform_block;
34 std::unique_ptr<graphics::uniform_buffer> _uniform_buffer;
40#include <libsbx/graphics/buffers/uniform_handler.ipp>