38 const std::shared_ptr<Buffers::FormaBuffer>&
buffer,
39 std::optional<Graphics::PrimitiveTopology>
topology = std::nullopt);
47 [[nodiscard]]
explicit operator bool() const noexcept {
return m_state !=
nullptr; }
50 [[nodiscard]] Buffers::FormaBuffer& operator*() const noexcept;
53 [[nodiscard]] const
std::shared_ptr<Buffers::FormaBuffer>&
buffer() const noexcept;
56 [[nodiscard]] SliceId slice() const noexcept;
59 void submit(const
std::vector<uint8_t>& bytes) const;
63 requires
std::ranges::contiguous_range<V>
64 &&
std::is_trivially_copyable_v<
std::ranges::range_value_t<V>>
65 void submit(const V& vertices)
const
67 const auto*
src =
reinterpret_cast<const uint8_t*
>(std::ranges::data(vertices));
68 const size_t n = std::ranges::size(vertices) *
sizeof(std::ranges::range_value_t<V>);
69 submit(std::vector<uint8_t>(
src,
src + n));
74 requires std::is_trivially_copyable_v<V>
75 && (!std::ranges::range<V>)
78 const auto*
src =
reinterpret_cast<const uint8_t*
>(&vertex);
79 submit(std::vector<uint8_t>(
src,
src +
sizeof(V)));
83 void bind_texture(uint32_t array_index,
const std::shared_ptr<Core::VKImage>&
image)
const;
86 void set_visible(
bool visible)
const;
93 void bring_to_front(int64_t priority)
const;
96 void send_to_back(int64_t priority)
const;
107 return a.buffer() ==
b.buffer() &&
a.slice() ==
b.slice();
112 return a.buffer() ==
b;
122 std::shared_ptr<Buffers::FormaBuffer>
buffer;