summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author0scar <qgt268@alumni.ku.dk>2024-07-28 13:49:09 +0000
committer0scar <qgt268@alumni.ku.dk>2024-07-28 13:49:09 +0000
commit52b18ea10f34b38e44ec6a8b7fdb187195f05907 (patch)
treec52f257268c68a2a006326596d0f8894cfab2cd6 /src
parentc34dfac0ef0df76b569da008e59f567620590569 (diff)
Fix renderbatch_refresh
Diffstat (limited to 'src')
-rw-r--r--src/rendering/src/rendering.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/rendering/src/rendering.c b/src/rendering/src/rendering.c
index ea14568..02c0ab7 100644
--- a/src/rendering/src/rendering.c
+++ b/src/rendering/src/rendering.c
@@ -73,10 +73,11 @@ int renderbatch_new(RenderBatch* renderbatch, const isize count) {
return 0;
}
-// renderbatch_refresh: Refresh all models in the batch.
+// renderbatch_refresh: Copy all models in the renderbatch to the batchs model.
int renderbatch_refresh(RenderBatch* renderbatch) {
+ isize buffers;
for (isize i = 0; i < renderbatch->mcount; i++) {
- memcpy(renderbatch->renderobj.buffer, obj->buffer, obj->buffer_len);
+ memcpy(renderbatch->renderobj.buffer, renderbatch->models[i].buffer, renderbatch->models[i].buffer_len);
}
return 0;
@@ -89,21 +90,26 @@ int renderbatch_add(RenderBatch* renderbatch, RenderObject* obj) {
return -1;
}
+ // Check if it is initialized
if (renderbatch->models == NULL) {
const isize sz = 8 * sizeof(RenderObject);
renderbatch->models = malloc(8 * sizeof(RenderObject));
renderbatch->msize = sz;
renderbatch->mcount = 0;
+
+ // Check if there's room enough
} else if ((renderbatch->mcount + 1) * sizeof(RenderObject) > renderbatch->msize) {
const isize sz = renderbatch->msize * 2;
renderbatch->models = realloc(&(renderbatch->models), sz);
renderbatch->msize = sz;
}
+ // Initialize renderobject buffer
if (renderbatch->renderobj.buffer == NULL) {
renderbatch->renderobj.buffer = malloc(sizeof(ShaderBuffer));
}
+ // If this is the first object, copy all its rendering params
if (renderbatch->mcount == 0) {
// Copy the first objects shaderstuff
renderbatch->renderobj.shader = obj->shader;
@@ -113,8 +119,6 @@ int renderbatch_add(RenderBatch* renderbatch, RenderObject* obj) {
renderbatch->renderobj.buffer_len = obj->buffer_len;
}
- memcpy(renderbatch->renderobj.buffer + renderbatch->renderobj.buffer_len, obj->buffer, obj->buffer_len);
-
if (renderbatch->mcount != 0) {
renderbatch->renderobj.buffer_len += obj->buffer_len;
}