remove indirection in vertex builder

This commit is contained in:
veclavtalica
2025-01-17 22:48:35 +03:00
parent 40aef0a1f9
commit 8a5d639f95
8 changed files with 53 additions and 85 deletions

View File

@ -218,29 +218,18 @@ VertexBufferBuilder build_vertex_buffer(VertexBuffer buffer, size_t bytes) {
CRY("build_vertex_buffer", "Error mapping a vertex array buffer");
return (VertexBufferBuilder) {
.mapping = mapping,
.bytes_left = bytes,
.base = mapping,
.size = bytes,
};
}
bool push_to_vertex_buffer_builder(VertexBufferBuilder *builder,
void const *bytes, size_t size) {
if (builder->bytes_left == 0)
return false;
void finish_vertex_builder(VertexBufferBuilder *builder) {
glUnmapBuffer(GL_ARRAY_BUFFER);
glBindBuffer(GL_ARRAY_BUFFER, 0);
memcpy(builder->mapping, bytes, size);
builder->bytes_left -= size;
/* trigger data send */
if (builder->bytes_left == 0) {
glUnmapBuffer(GL_ARRAY_BUFFER);
return false;
}
builder->mapping = (void *)((uintptr_t)builder->mapping + size);
return true;
builder->base = 0;
builder->size = 0;
}