From 23712c9c011d77bb65426fdbc34d9409a291818e Mon Sep 17 00:00:00 2001 From: Danny Holman Date: Tue, 19 Nov 2024 14:47:46 -0600 Subject: render: streamline the common renderer interface Streamline the common renderer interface such that all functionality is set by the renderer initialization function. This reduces the number of API functions and allows developers to define custom rendering interfaces easier. Signed-off-by: Danny Holman --- include/rune/render/renderer.h | 10 ++-------- render/directx/renderer.c | 4 ++-- render/vulkan/renderer.c | 5 ++--- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/include/rune/render/renderer.h b/include/rune/render/renderer.h index e95a0eb..ebf8602 100644 --- a/include/rune/render/renderer.h +++ b/include/rune/render/renderer.h @@ -23,11 +23,10 @@ #define RUNE_RENDER_RENDERER_H #include -#include +#include struct rune_renderer { - int (*init)(struct rune_window *window); - void (*close)(struct rune_renderer *renderer); + void (*close)(void); void (*draw)(void); void (*clear)(void); }; @@ -35,9 +34,4 @@ struct rune_renderer { RAPI struct rune_renderer* select_render_vulkan(struct rune_window *window); RAPI struct rune_renderer* select_render_directx(struct rune_window *window); -RAPI void rune_render_draw(struct rune_renderer *renderer); -RAPI void rune_render_clear(struct rune_renderer *renderer); - -RAPI void rune_destroy_renderer(struct rune_renderer *renderer); - #endif diff --git a/render/directx/renderer.c b/render/directx/renderer.c index 4cecf6f..c0cac9c 100644 --- a/render/directx/renderer.c +++ b/render/directx/renderer.c @@ -1,6 +1,6 @@ -#include -#include #include +#include +#include #ifdef _WIN32 diff --git a/render/vulkan/renderer.c b/render/vulkan/renderer.c index caf269a..0facddf 100644 --- a/render/vulkan/renderer.c +++ b/render/vulkan/renderer.c @@ -129,7 +129,7 @@ int _init_vulkan(struct rune_window *window) { return 0; } -void _close_vulkan(struct rune_renderer *renderer) { +void _close_vulkan(void) { vkDeviceWaitIdle(context->dev->ldev); for (uint8_t i = 0; i < context->swapchain->max_frames; i++) { if (context->image_semaphores[i] != NULL) @@ -158,11 +158,10 @@ void _clear_vulkan(void) { struct rune_renderer* select_render_vulkan(struct rune_window *window) { struct rune_renderer *ret = rune_alloc(sizeof(struct rune_renderer)); - ret->init = _init_vulkan; ret->close = _close_vulkan; ret->draw = _draw_vulkan; ret->clear = _clear_vulkan; - if ((*ret->init)(window) != 0) + if (_init_vulkan(window) != 0) rune_abort(); return ret; } -- cgit v1.2.3