From b37b5398a6afa940acd1138bde922a70838f33af Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Fri, 4 Jul 2025 10:37:01 -0700 Subject: Add the new low-level renderer, shared between the imm and scene graph renderer. LLR integration with the scene graph renderer not yet done. --- src/gfx.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'src/gfx.c') diff --git a/src/gfx.c b/src/gfx.c index cd2ac90..4291ae7 100644 --- a/src/gfx.c +++ b/src/gfx.c @@ -2,20 +2,20 @@ #include "asset/asset_cache.h" #include "core/core_impl.h" +#include "llr/llr_impl.h" #include "renderer/imm_renderer_impl.h" #include "renderer/renderer_impl.h" #include "scene/scene_memory.h" -#include - #include #include typedef struct Gfx { AssetCache asset_cache; GfxCore gfxcore; - Renderer renderer; + LLR llr; ImmRenderer imm_renderer; + Renderer renderer; } Gfx; Gfx* gfx_init(void) { @@ -24,16 +24,20 @@ Gfx* gfx_init(void) { return 0; } gfx_init_gfxcore(&gfx->gfxcore); - if (!renderer_make(&gfx->renderer, &gfx->gfxcore)) { + if (!gfx_llr_make(&gfx->llr, &gfx->gfxcore)) { gfx_destroy(&gfx); return 0; } - if (!imm_renderer_make(&gfx->imm_renderer, &gfx->gfxcore)) { + if (!gfx_imm_make(&gfx->imm_renderer, &gfx->gfxcore, &gfx->llr)) { // TODO: Add error logs to the initialization failure cases here and inside // the renderers. gfx_destroy(&gfx); return 0; } + if (!gfx_renderer_make(&gfx->renderer, &gfx->llr, &gfx->gfxcore)) { + gfx_destroy(&gfx); + return 0; + } gfx_init_asset_cache(&gfx->asset_cache); scene_mem_init(); return gfx; @@ -45,8 +49,9 @@ void gfx_destroy(Gfx** gfx) { } scene_mem_destroy(); gfx_destroy_asset_cache(&(*gfx)->asset_cache); - renderer_destroy(&(*gfx)->renderer); - imm_renderer_destroy(&(*gfx)->imm_renderer); + gfx_renderer_destroy(&(*gfx)->renderer); + gfx_imm_destroy(&(*gfx)->imm_renderer); + gfx_llr_destroy(&(*gfx)->llr); gfx_del_gfxcore(&(*gfx)->gfxcore); free(*gfx); *gfx = 0; @@ -67,6 +72,11 @@ ImmRenderer* gfx_get_imm_renderer(Gfx* gfx) { return &gfx->imm_renderer; } +LLR* gfx_get_llr(Gfx* gfx) { + assert(gfx); + return &gfx->llr; +} + AssetCache* gfx_get_asset_cache(Gfx* gfx) { assert(gfx); return &gfx->asset_cache; -- cgit v1.2.3