29 : gpu_vertex_buffer_(gpu_vertex_buffer),
30 element_count_(element_count),
31 use_update_sub_(use_update_sub)
49 switch (element_count) {
76 return new GPUVertexBuffer(*vertex_buffer, element_count, use_update_sub);
90 void *device_context = NULL)
93 if (use_update_sub_) {
95 size_t offset = start_vertex * element_count_ *
sizeof(
float);
96 size_t data_len = num_vertices * element_count_ *
sizeof(
float);
101 buffer_nodes = buffer_nodes.
drop_front(start_vertex * element_count_);
102 memcpy(buffer_nodes.
data(), src,
sizeof(
float) * element_count_ * num_vertices);
115 return &gpu_vertex_buffer_;
GPUBackendType 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.
#define assert(assertion)