sandbox
Loading...
Searching...
No Matches
push_handler.hpp
1#ifndef LIBSBX_GRAPHICS_BUFFERS_PUSH_HANDLER_HPP_
2#define LIBSBX_GRAPHICS_BUFFERS_PUSH_HANDLER_HPP_
3
4#include <cinttypes>
5#include <optional>
6#include <memory>
7#include <concepts>
8
9#include <libsbx/graphics/pipeline/shader.hpp>
10#include <libsbx/graphics/pipeline/pipeline.hpp>
11#include <libsbx/graphics/pipeline/graphics_pipeline.hpp>
12
13#include <libsbx/graphics/commands/command_buffer.hpp>
14
15namespace sbx::graphics {
16
18
19public:
20
22
24
25 // push_handler(const std::optional<shader::uniform_block>& uniform_block = std::nullopt);
26
27 template<typename Type>
28 auto push(const Type& object, std::size_t size, std::size_t offset) -> void;
29
30 template<typename Type>
31 auto push(const std::string& uniform_name, const Type& object, std::size_t size = 0) -> void;
32
33 // auto update(const std::optional<shader::uniform_block>& uniform_block) -> bool;
34
35 auto bind(command_buffer& command_buffer) -> void;
36
37private:
38
39 std::optional<shader::uniform_block> _uniform_block;
40 std::unique_ptr<std::uint8_t[]> _data;
41 VkPipelineLayout _pipeline_layout;
42
43}; // class push_handler
44
45} // namespace sbx::graphics
46
47#include <libsbx/graphics/buffers/push_handler.ipp>
48
49#endif // LIBSBX_GRAPHICS_BUFFERS_PUSH_HANDLER_HPP_
Definition: command_buffer.hpp:14
Definition: pipeline.hpp:20
Definition: push_handler.hpp:17
Definition: resource_storage.hpp:17