diff options
author | Danny Holman <dholman@gymli.org> | 2024-11-19 14:47:46 -0600 |
---|---|---|
committer | Danny Holman <dholman@gymli.org> | 2024-11-19 14:47:46 -0600 |
commit | 23712c9c011d77bb65426fdbc34d9409a291818e (patch) | |
tree | f8a65369cc68b30ffbfeb145aa04f0c522bc4c7c | |
parent | 2a0aaa4cc461c1432416c315683ed1f2c65a75db (diff) |
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 <dholman@gymli.org>
-rw-r--r-- | include/rune/render/renderer.h | 10 | ||||
-rw-r--r-- | render/directx/renderer.c | 4 | ||||
-rw-r--r-- | 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 <rune/util/types.h> -#include <rune/ui/window.h> +#include <rune/ui/app_window.h> 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 <rune/ui/renderer.h> -#include <rune/core/logging.h> #include <rune/core/abort.h> +#include <rune/core/logging.h> +#include <rune/render/renderer.h> #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; } |