69 void set_vertices(
const void* data,
size_t byte_count,
75 [[nodiscard]]
bool has_pending() const noexcept;
81 void on_attach(
const std::shared_ptr<Buffer>& buffer)
override;
82 void on_detach(
const std::shared_ptr<Buffer>& buffer)
override;
83 void processing_function(
const std::shared_ptr<Buffer>& buffer)
override;
void set_config(const Kakshya::VertexAccessConfig &config)
std::shared_ptr< VKBuffer > m_staging
std::optional< Kakshya::DataVariant > m_pending_data
std::atomic_flag m_vertices_dirty
~GeometryWriteProcessor() override=default
std::atomic_flag m_data_dirty
std::optional< Kakshya::DataVariant > m_active_data
std::optional< VertexSnapshot > m_pending_vertices
std::optional< VertexSnapshot > m_active_vertices
Kakshya::VertexAccessConfig m_config
Accepts externally-supplied DataVariant and uploads it as vertex data to a VKBuffer each cycle.
GeometryWriteMode
Specifies how vertex data should be interpreted for upload.
@ LINE
Interpret vertex data as Nodes::LineVertex.
@ MESH
Interpret vertex data as Nodes::MeshVertex.
@ POINT
Interpret vertex data as Nodes::PointVertex.
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.
Kakshya::VertexLayout layout
std::vector< std::byte > bytes
Owned copy of pre-resolved vertex bytes and their layout.
Default attribute values for shader-compatible vertex conversion.
Complete description of vertex data layout in a buffer.