MayaFlux 0.1.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 83 of file GeometryWriterNode.cpp.

84{
85 if (!data || size_bytes == 0) {
87 "Cannot set vertex: null data or zero size");
88 return;
89 }
90
91 if (m_vertex_stride == 0) {
93 "Cannot set vertex: stride is 0");
94 return;
95 }
96
97 if (vertex_index >= m_vertex_count) {
99 "Vertex index {} out of range (count: {})",
100 vertex_index, m_vertex_count);
101 return;
102 }
103
104 if (size_bytes > m_vertex_stride) {
106 "Vertex data size {} exceeds stride {}; truncating",
107 size_bytes, m_vertex_stride);
108 size_bytes = m_vertex_stride;
109 }
110
111 size_t offset_floats = (static_cast<size_t>(vertex_index) * m_vertex_stride) / sizeof(float);
112
113 std::memcpy(
114 reinterpret_cast<uint8_t*>(m_vertex_buffer.data()) + (offset_floats * sizeof(float)),
115 data,
116 size_bytes);
117
119 "GeometryWriterNode: Set vertex {} ({} bytes)", vertex_index, size_bytes);
120
121 m_vertex_data_dirty = true;
122}
#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.