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