summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author0scar <qgt268@alumni.ku.dk>2024-07-29 22:38:55 +0000
committer0scar <qgt268@alumni.ku.dk>2024-07-29 22:38:55 +0000
commitfc08d62709fb9c3e00c9e37c6c9c5a54ecae7e99 (patch)
tree4b7032703da968bfb2cdda43340f9cfab480eb02
parent8e3269629587f257bcd322c15a894488f9bae8d8 (diff)
Extend renderbatch_add to handle multiple models
-rw-r--r--src/rendering/src/rendering.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/rendering/src/rendering.c b/src/rendering/src/rendering.c
index 0c1052a..06880fd 100644
--- a/src/rendering/src/rendering.c
+++ b/src/rendering/src/rendering.c
@@ -85,7 +85,21 @@ ShaderBuffer* shaderbuffer_cat(ShaderBuffer* dst, ShaderBuffer *restrict src) {
// Assume that we single-handedly control the pointer to the data, copy and
// free the stuff.
- //
+
+ // Verify the size
+ const isize sz_src = src->size_elem * src->count;
+ const isize sz_dst = dst->size_elem * dst->count;
+ if (sz_src + sz_dst >= dst->size) {
+ const isize sz_new = (1 + ((sz_src + sz_dst) / 4096)) * 4096;
+ // Resize dst size
+ dst->data = realloc(dst->data, sz_new);
+ dst->size = sz_new;
+ }
+
+ memcpy(dst->data + sz_dst, src->data, sz_src);
+
+ dst->count += src->count;
+
return dst;
}