diff options
| -rw-r--r-- | src/rendering/include/engine/rendering/rendering.h | 4 | ||||
| -rw-r--r-- | src/rendering/src/rendering.c | 47 |
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) { //} |
