From 50a84a54e7cc2308ad87bd04e065151a61ffe513 Mon Sep 17 00:00:00 2001 From: Fabrice Date: Wed, 11 Feb 2026 23:32:44 +0100 Subject: generalizing buffer --- src/rendering.cc | 47 +++++++++++++---------------------------------- src/rendering.h | 22 +++++++++++----------- 2 files changed, 24 insertions(+), 45 deletions(-) diff --git a/src/rendering.cc b/src/rendering.cc index e916d31..8127c13 100644 --- a/src/rendering.cc +++ b/src/rendering.cc @@ -155,50 +155,29 @@ bool wayc_atlas_packer_allocate(struct atlas_packer_s* packer, u32 width, return true; } -bool wayc_vbo_init(vbo_t* vbo, usize size) { - wayc_notnull(vbo); +bool wayc_buffer_init(buffer_t* buffer, usize size) { + wayc_notnull(buffer); - glCreateBuffers(1, vbo); - if (*vbo == 0) return false; + glCreateBuffers(1, buffer); + if (*buffer == 0) return false; - glNamedBufferStorage(*vbo, size, NULL, GL_DYNAMIC_STORAGE_BIT); + glNamedBufferStorage(*buffer, size, nullptr, GL_DYNAMIC_STORAGE_BIT); return true; } -bool wayc_vbo_upload(vbo_t vbo, usize offset, usize size, const u8* data) { +bool wayc_buffer_set(buffer_t buffer, usize offset, usize size, + const u8* data) { wayc_notnull(data); - glNamedBufferSubData(vbo, offset, size, data); // TODO: add error checking + glNamedBufferSubData(buffer, offset, size, data); // TODO: add error checking return true; } -void wayc_vbo_use(vbo_t vbo) { glBindBuffer(GL_ARRAY_BUFFER, vbo); } - -void wayc_vbo_deinit(vbo_t* vbo) { - wayc_notnull(vbo); - glDeleteBuffers(1, vbo); -} - -bool wayc_ebo_init(ebo_t* ebo, usize size) { - wayc_notnull(ebo); - - glCreateBuffers(1, ebo); - if (*ebo == 0) return false; - - glNamedBufferStorage(*ebo, size, NULL, GL_DYNAMIC_STORAGE_BIT); - return true; +void wayc_buffer_use(buffer_t buffer, buffer_type_e type) { + glBindBuffer(type, buffer); } -bool wayc_ebo_upload(ebo_t ebo, usize offset, usize size, const u8* data) { - wayc_notnull(data); - - glNamedBufferSubData(ebo, offset, size, data); - return true; -} - -void wayc_ebo_use(ebo_t ebo) { glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); } - -void wayc_ebo_deinit(ebo_t* ebo) { - wayc_notnull(ebo); - glDeleteBuffers(1, ebo); +void wayc_buffer_deinit(buffer_t* buffer) { + wayc_notnull(buffer); + glDeleteBuffers(1, buffer); } diff --git a/src/rendering.h b/src/rendering.h index a3982cf..67f4682 100644 --- a/src/rendering.h +++ b/src/rendering.h @@ -6,6 +6,8 @@ #include "glad.h" #include "utils.h" +// TODO: review all structs and use types + enum image_type_e { IMAGE_TYPE_2D = GL_TEXTURE_2D, }; @@ -80,16 +82,14 @@ struct atlas_packer_s { bool wayc_atlas_packer_allocate(struct atlas_packer_s* packer, u32 width, u32 height, ivec2 out); -typedef u32 vbo_t; - -bool wayc_vbo_init(vbo_t* vbo, usize size); -bool wayc_vbo_upload(vbo_t vbo, usize offset, usize size, const u8* data); -void wayc_vbo_use(vbo_t vbo); -void wayc_vbo_deinit(vbo_t* vbo); +enum buffer_type_e { + BUFFER_TYPE_VERTEX = GL_ARRAY_BUFFER, + BUFFER_TYPE_INDEX = GL_ELEMENT_ARRAY_BUFFER, +}; -typedef u32 ebo_t; +typedef u32 buffer_t; -bool wayc_ebo_init(ebo_t* ebo, usize size); -bool wayc_ebo_upload(ebo_t ebo, usize offset, usize size, const u8* data); -void wayc_ebo_use(ebo_t ebo); -void wayc_ebo_deinit(ebo_t* ebo); +bool wayc_buffer_init(buffer_t* buffer, usize size); +bool wayc_buffer_set(buffer_t buffer, usize offset, usize size, const u8* data); +void wayc_buffer_use(buffer_t buffer, buffer_type_e type); +void wayc_buffer_deinit(buffer_t* buffer); -- cgit v1.2.3