29 : gpu_vertex_buffer_(gpu_vertex_buffer),
30 element_count_(element_count),
31 use_update_sub_(use_update_sub)
59 return new GPUVertexBuffer(*vertex_buffer, element_count, use_update_sub);
73 void *device_context = NULL)
76 if (use_update_sub_) {
78 size_t offset = start_vertex * element_count_ *
sizeof(float);
79 size_t data_len = num_vertices * element_count_ *
sizeof(float);
84 buffer_nodes = buffer_nodes.
drop_front(start_vertex * element_count_);
85 memcpy(buffer_nodes.
data(), src,
sizeof(
float) * element_count_ * num_vertices);
98 return &gpu_vertex_buffer_;
eGPUBackendType GPU_backend_get_type()
void GPU_vertbuf_init_build_on_device(blender::gpu::VertBuf &verts, const GPUVertFormat &format, uint v_len)
void GPU_vertbuf_use(blender::gpu::VertBuf *)
blender::gpu::VertBuf * GPU_vertbuf_create_with_format_ex(const GPUVertFormat &format, GPUUsageType usage)
void GPU_vertbuf_tag_dirty(blender::gpu::VertBuf *verts)
blender::gpu::VertBuf * GPU_vertbuf_calloc()
void GPU_vertbuf_data_alloc(blender::gpu::VertBuf &verts, uint v_len)
void GPU_vertbuf_update_sub(blender::gpu::VertBuf *verts, uint start, uint len, const void *data)
uint GPU_vertbuf_get_vertex_len(const blender::gpu::VertBuf *verts)
void GPU_vertbuf_discard(blender::gpu::VertBuf *)
constexpr T * data() const
constexpr MutableSpan drop_front(const int64_t n) const
GPUVertexBuffer(gpu::VertBuf &gpu_vertex_buffer, int element_count, bool use_update_sub)
void UpdateData(const float *src, int start_vertex, int num_vertices, void *device_context=NULL)
~GPUVertexBuffer()
Destructor.
gpu::VertBuf * get_vertex_buffer()
static GPUVertexBuffer * Create(int element_count, int vertex_len, void *device_context=nullptr)
int GetNumVertices() const
Returns how many vertices allocated in this vertex buffer.