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

◆ set_vertex()

void MayaFlux::Nodes::GpuSync::GeometryWriterNode::set_vertex ( uint32_t  vertex_index,
const void *  data,
size_t  size_bytes 
)

Set a single vertex by index.

Parameters
vertex_indexIndex of vertex to set
dataPointer to vertex data
size_bytesSize of vertex data (should match stride)

Copies size_bytes starting at (vertex_index * stride).

Definition at line 85 of file GeometryWriterNode.cpp.

86{
87 if (!data || size_bytes == 0) {
89 "Cannot set vertex: null data or zero size");
90 return;
91 }
92
93 if (m_vertex_stride == 0) {
95 "Cannot set vertex: stride is 0");
96 return;
97 }
98
99 if (vertex_index >= m_vertex_count) {
101 "Vertex index {} out of range (count: {})",
102 vertex_index, m_vertex_count);
103 return;
104 }
105
106 if (size_bytes > m_vertex_stride) {
108 "Vertex data size {} exceeds stride {}; truncating",
109 size_bytes, m_vertex_stride);
110 size_bytes = m_vertex_stride;
111 }
112
113 size_t offset_floats = (static_cast<size_t>(vertex_index) * m_vertex_stride) / sizeof(float);
114
115 std::memcpy(
116 reinterpret_cast<uint8_t*>(m_vertex_buffer.data()) + (offset_floats * sizeof(float)),
117 data,
118 size_bytes);
119
121 "GeometryWriterNode: Set vertex {} ({} bytes)", vertex_index, size_bytes);
122
123 m_vertex_data_dirty = true;
124}
#define MF_ERROR(comp, ctx,...)
#define MF_TRACE(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
std::vector< uint8_t > m_vertex_buffer
Vertex data buffer (flat array of bytes)
bool m_vertex_data_dirty
Flag: vertex data or layout changed since last GPU upload.
size_t m_vertex_stride
Bytes per vertex (stride for vertex buffer binding)
uint32_t m_vertex_count
Number of vertices in buffer.
@ NodeProcessing
Node graph processing (Nodes::NodeGraphManager)
@ Nodes
DSP Generator and Filter Nodes, graph pipeline, node management.

References m_vertex_buffer, m_vertex_count, m_vertex_data_dirty, m_vertex_stride, MF_ERROR, MF_TRACE, MF_WARN, MayaFlux::Journal::NodeProcessing, and MayaFlux::Journal::Nodes.