sandbox
Loading...
Searching...
No Matches
uniform_handler.hpp
1#ifndef LIBSBX_GRAPHICS_BUFFERS_UNIFORM_HANDLER_HPP_
2#define LIBSBX_GRAPHICS_BUFFERS_UNIFORM_HANDLER_HPP_
3
4#include <memory>
5#include <optional>
6
7#include <libsbx/memory/observer_ptr.hpp>
8
9#include <libsbx/graphics/pipeline/shader.hpp>
10
11#include <libsbx/graphics/buffers/uniform_buffer.hpp>
12
13namespace sbx::graphics {
14
16
17public:
18
19 uniform_handler(const std::optional<shader::uniform_block>& uniform_block = std::nullopt);
20
21 template<typename Type>
22 auto push(const Type& object, std::size_t size, std::size_t offset) -> void;
23
24 template<typename Type>
25 auto push(const std::string& uniform_name, const Type& object, std::size_t size = 0) -> void;
26
27 auto uniform_buffer() const noexcept -> const uniform_buffer&;
28
29 auto update(const std::optional<shader::uniform_block>& uniform_block) -> bool;
30
31private:
32
33 auto _push(std::span<const std::uint8_t> buffer, std::size_t offset) -> void;
34
35 std::optional<shader::uniform_block> _uniform_block;
36 // std::unique_ptr<graphics::uniform_buffer> _uniform_buffer;
37 uniform_buffer_handle _uniform_buffer;
38
39}; // class uniform_handler
40
41} // namespace sbx::graphics
42
43#include <libsbx/graphics/buffers/uniform_handler.ipp>
44
45#endif // LIBSBX_GRAPHICS_BUFFERS_UNIFORM_HANDLER_HPP_
Definition: buffer.hpp:20
Definition: uniform_buffer.hpp:16
Definition: uniform_handler.hpp:15