MayaFlux 0.5.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ compute_frame()

void MayaFlux::Nodes::GpuSync::GeometryLeafNode::compute_frame ( )
overridevirtual

No-op unless a mutator has run since the last call, so AssemblyOperator::process() calling this on every item every frame stays cheap regardless of how many items exist.

Implements MayaFlux::Nodes::GpuSync::GpuSync.

Definition at line 94 of file GeometryLeafNode.cpp.

95{
96 if (!m_geometry_dirty) {
97 return;
98 }
99 m_geometry_dirty = false;
100
101 if (m_items.empty()) {
102 resize_vertex_buffer(0, false);
103 return;
104 }
105
106 if (get_vertex_count() != m_items.size()) {
107 resize_vertex_buffer(static_cast<uint32_t>(m_items.size()), false);
108 }
109
110 set_vertices<Vertex>(std::span { m_items.data(), m_items.size() });
111
112 auto layout = layout_for_topology(get_primitive_topology());
113 layout.vertex_count = static_cast<uint32_t>(m_items.size());
114 set_vertex_layout(layout);
115}
uint32_t get_vertex_count() const
Get number of vertices.
virtual Portal::Graphics::PrimitiveTopology get_primitive_topology() const
Primitive topology this node's vertex data represents.
void set_vertex_layout(const Kakshya::VertexLayout &layout)
Set cached vertex layout.
void resize_vertex_buffer(uint32_t vertex_count, bool preserve_data=false)
Resize vertex buffer to hold specified number of vertices.

References MayaFlux::Nodes::GpuSync::GeometryWriterNode::get_primitive_topology(), MayaFlux::Nodes::GpuSync::GeometryWriterNode::get_vertex_count(), m_geometry_dirty, m_items, MayaFlux::Nodes::GpuSync::GeometryWriterNode::resize_vertex_buffer(), and MayaFlux::Nodes::GpuSync::GeometryWriterNode::set_vertex_layout().

+ Here is the call graph for this function: