2#ifndef LIBSBX_GRAPHICS_DRAW_LIST_HPP_
3#define LIBSBX_GRAPHICS_DRAW_LIST_HPP_
8#include <libsbx/utility/hashed_string.hpp>
9#include <libsbx/utility/logger.hpp>
11#include <libsbx/math/uuid.hpp>
13#include <libsbx/memory/tracking_allocator.hpp>
15#include <libsbx/graphics/buffers/storage_buffer.hpp>
16#include <libsbx/graphics/images/image2d.hpp>
17#include <libsbx/graphics/images/sampler_state.hpp>
18#include <libsbx/graphics/images/separate_image2d_array.hpp>
19#include <libsbx/graphics/images/separate_sampler_array.hpp>
21namespace sbx::graphics {
32 using storage_buffer_container = std::unordered_map<std::size_t, storage_buffer_handle>;
33 using draw_command_range_container = std::unordered_map<math::uuid, draw_command_range>;
39 virtual auto update() ->
void = 0;
41 auto buffers()
const noexcept ->
const storage_buffer_container&;
49 auto draw_ranges(
const utility::hashed_string& name)
const noexcept ->
const draw_command_range_container&;
51 auto draw_ranges(
const std::size_t hash)
const noexcept ->
const draw_command_range_container&;
55 auto create_buffer(
const utility::hashed_string& name, VkDeviceSize size, VkBufferUsageFlags additional_usage = 0) -> void;
59 template<
typename Type>
78 storage_buffer_container _buffers;
81 std::unordered_map<std::size_t, draw_command_range_container> _draw_ranges;
87#include <libsbx/graphics/draw_list.ipp>
Definition: buffer.hpp:21
Definition: draw_list.hpp:28
Definition: resource_storage.hpp:18
Definition: separate_image2d_array.hpp:16
Definition: separate_sampler_array.hpp:13
Definition: storage_buffer.hpp:17
Definition: hashed_string.hpp:17
Definition: draw_list.hpp:23