46 size_t capacity_bytes,
102 void submit(
const std::vector<uint8_t>& bytes);
124 SliceId add_slice(
const std::vector<uint8_t>& bytes,
125 std::optional<Portal::Graphics::PrimitiveTopology>
topology = std::nullopt);
128 void update_slice(
SliceId id,
const std::vector<uint8_t>& bytes);
131 [[nodiscard]]
size_t slice_count() const noexcept;
134 [[nodiscard]]
bool has_slice(
SliceId id) const noexcept;
140 void set_slice_visible(
SliceId id,
bool visible);
143 void bring_slice_to_front(
SliceId id);
146 void send_slice_to_back(
SliceId id);
159 void set_texture(
std::shared_ptr<Core::VKImage>
image,
std::
string binding);
171 void bind_texture(uint32_t array_index, const
std::shared_ptr<Core::VKImage>&
image);
173 [[nodiscard]] Portal::Graphics::PrimitiveTopology
topology()
const {
return m_topology; }
185 template <
typename V>
186 requires std::ranges::contiguous_range<V>
187 && std::is_trivially_copyable_v<std::ranges::range_value_t<V>>
190 const auto*
src =
reinterpret_cast<const uint8_t*
>(std::ranges::data(vertices));
191 const size_t n = std::ranges::size(vertices) *
sizeof(std::ranges::range_value_t<V>);
192 submit(std::vector<uint8_t>(
src,
src + n));
204 template <
typename V>
205 requires std::is_trivially_copyable_v<V>
206 && (!std::ranges::range<V>)
209 const auto*
src =
reinterpret_cast<const uint8_t*
>(&vertex);
210 submit(std::vector<uint8_t>(
src,
src +
sizeof(V)));
PrimitiveTopology topology
Vulkan-backed buffer wrapper used in processing chains.
ProcessingToken
Bitfield enum defining processing characteristics and backend requirements for buffer operations.
PrimitiveTopology
Vertex assembly primitive topology.
Unified rendering configuration for graphics buffers.