summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author0scar <qgt268@alumni.ku.dk>2024-07-29 13:09:22 +0000
committer0scar <qgt268@alumni.ku.dk>2024-07-29 13:09:22 +0000
commit8648e3474576f977cc3229b6b9a302d73b84e447 (patch)
treebde4e5442b62b6739b3fd1ee19caae491d1fee77
parent31e4542d4a4987e106d32c122ac0184e209a1c66 (diff)
Export refresh, new, and add, renderbatch functions
-rw-r--r--src/rendering/include/engine/rendering/rendering.h4
-rw-r--r--src/rendering/src/rendering.c47
2 files changed, 28 insertions, 23 deletions
diff --git a/src/rendering/include/engine/rendering/rendering.h b/src/rendering/include/engine/rendering/rendering.h
index 6789051..d2d17d5 100644
--- a/src/rendering/include/engine/rendering/rendering.h
+++ b/src/rendering/include/engine/rendering/rendering.h
@@ -208,6 +208,10 @@ RenderObject RenderObject_new(
u32 texture,
ShaderBuffer *restrict buffers, usize num_buffers);
+int renderbatch_new(RenderBatch* renderbatch, isize count);
+int renderbatch_add(RenderBatch* renderbatch, RenderObject* obj);
+int renderbatch_refresh(RenderBatch* renderbatch);
+
Shader compile_shader(const char* file_path, const ShaderType shader_type);
Shader compose_shader(Shader *shaders, usize shaders_len);
void shaders_delete(Shader* shader, isize shader_len);
diff --git a/src/rendering/src/rendering.c b/src/rendering/src/rendering.c
index 8f52763..f7b30e2 100644
--- a/src/rendering/src/rendering.c
+++ b/src/rendering/src/rendering.c
@@ -15,13 +15,11 @@ extern Platform* GLOBAL_PLATFORM;
/* Globals */
#define drawcall_limit (64 * 1024)
-#define batch_limit 64
RenderDrawCall drawcalls[drawcall_limit];
-RenderBatch render_batches[batch_limit];
i32 drawcall_len = 0;
-const
-usize ShaderBufferDataType_size(ShaderBufferDataType t) {
+const usize
+ShaderBufferDataType_size(ShaderBufferDataType t) {
switch (t) {
case ShaderBufferDataType_nil: return 0;
case ShaderBufferDataType_f32: return sizeof(f32);
@@ -41,24 +39,26 @@ usize ShaderBufferDataType_size(ShaderBufferDataType t) {
// Renderbatches assumes that all buffer layouts are the same.
// renderbatch_new: Create a new render batch with space for `count` models.
-int renderbatch_new(RenderBatch* renderbatch, const isize count) {
+int renderbatch_new(RenderBatch* renderbatch, isize count) {
if (renderbatch == NULL) {
ERROR("renderbatch was null!");
return -1;
}
- if (count < 1) {
+ if (count < 0) {
ERROR("count must be a positive integer!");
return -1;
+ } else if (count == 0) {
+ // Just allocate enough for a couple hundred
+ count = 255;
}
- GladGLContext* restrict gl = GLOBAL_PLATFORM->window->context;
-
- u32 vbo = 0;
- gl->CreateBuffers(1, &vbo);
- gl->BindBuffer(GL_ARRAY_BUFFER, vbo);
- gl->BufferData(GL_ARRAY_BUFFER, 0, NULL, GL_DYNAMIC_DRAW);
- gl->VertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), 0);
+ //GladGLContext* restrict gl = GLOBAL_PLATFORM->window->context;
+ //u32 vbo = 0;
+ //gl->CreateBuffers(1, &vbo);
+ //gl->BindBuffer(GL_ARRAY_BUFFER, vbo);
+ //gl->BufferData(GL_ARRAY_BUFFER, 0, NULL, GL_DYNAMIC_DRAW);
+ //gl->VertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), 0);
renderbatch->msize = sizeof(RenderObject) * count;
renderbatch->mcount = 0;
@@ -73,16 +73,6 @@ int renderbatch_new(RenderBatch* renderbatch, const isize count) {
return 0;
}
-// 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, renderbatch->models[i].buffer, renderbatch->models[i].buffer_len);
- }
-
- return 0;
-}
-
// Add a render object to the render batch
int renderbatch_add(RenderBatch* renderbatch, RenderObject* obj) {
if (renderbatch == NULL) {
@@ -127,6 +117,17 @@ int renderbatch_add(RenderBatch* renderbatch, RenderObject* obj) {
return 0;
}
+// 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, renderbatch->models[i].buffer, renderbatch->models[i].buffer_len);
+ }
+
+ return 0;
+}
+
+
//RenderBatch renderobject_extend(RenderObject b, RenderObject *restrict object) {
//}