summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Holman <dholman@gymli.org>2024-11-19 14:47:46 -0600
committerDanny Holman <dholman@gymli.org>2024-11-19 14:47:46 -0600
commit23712c9c011d77bb65426fdbc34d9409a291818e (patch)
treef8a65369cc68b30ffbfeb145aa04f0c522bc4c7c
parent2a0aaa4cc461c1432416c315683ed1f2c65a75db (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.h10
-rw-r--r--render/directx/renderer.c4
-rw-r--r--render/vulkan/renderer.c5
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;
}