diff options
| author | 0scar <qgt268@alumni.ku.dk> | 2024-07-29 22:38:55 +0000 |
|---|---|---|
| committer | 0scar <qgt268@alumni.ku.dk> | 2024-07-29 22:38:55 +0000 |
| commit | fc08d62709fb9c3e00c9e37c6c9c5a54ecae7e99 (patch) | |
| tree | 4b7032703da968bfb2cdda43340f9cfab480eb02 /src/rendering | |
| parent | 8e3269629587f257bcd322c15a894488f9bae8d8 (diff) | |
Extend renderbatch_add to handle multiple models
Diffstat (limited to 'src/rendering')
| -rw-r--r-- | src/rendering/src/rendering.c | 16 |
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; } |
