From 36526392f690e275ba6e530c8f4ef1aa6f38126d Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 4 Jan 2025 04:18:42 +0100 Subject: [PATCH] added functions for reloading existing buffers so their size may be changed --- src/rlgl.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/rlgl.h b/src/rlgl.h index 245fd059dd6b..e027c465cbd7 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -738,6 +738,8 @@ RLAPI void rlSetTexture(unsigned int id); // Set current texture f RLAPI unsigned int rlLoadVertexArray(void); // Load vertex array (vao) if supported RLAPI unsigned int rlLoadVertexBuffer(const void *buffer, int size, bool dynamic); // Load a vertex buffer object RLAPI unsigned int rlLoadVertexBufferElement(const void *buffer, int size, bool dynamic); // Load vertex buffer elements object +RLAPI void rlReloadVertexBuffer(unsigned int id, const void *buffer, int size, bool dynamic); // Reload an existing vertex buffer object +RLAPI void rlReloadVertexBufferElement(unsigned int id, const void *buffer, int size, bool dynamic); // Reload an existing vertex buffer elements object RLAPI void rlUpdateVertexBuffer(unsigned int bufferId, const void *data, int dataSize, int offset); // Update vertex buffer object data on GPU buffer RLAPI void rlUpdateVertexBufferElements(unsigned int id, const void *data, int dataSize, int offset); // Update vertex buffer elements data on GPU buffer RLAPI void rlUnloadVertexArray(unsigned int vaoId); // Unload vertex array (vao) @@ -3859,6 +3861,24 @@ unsigned int rlLoadVertexBufferElement(const void *buffer, int size, bool dynami return id; } +// Reload an existing vertex buffer object +void rlReloadVertexBuffer(unsigned int id, const void *buffer, int size, bool dynamic) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glBindBuffer(GL_ARRAY_BUFFER, id); + glBufferData(GL_ARRAY_BUFFER, size, buffer, dynamic? GL_DYNAMIC_DRAW : GL_STATIC_DRAW); +#endif +} + +// Reload an existing vertex buffer elements object +void rlReloadVertexBufferElement(unsigned int id, const void *buffer, int size, bool dynamic) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, id); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, size, buffer, dynamic? GL_DYNAMIC_DRAW : GL_STATIC_DRAW); +#endif +} + // Enable vertex buffer (VBO) void rlEnableVertexBuffer(unsigned int id) {