diff options
author | Danny Holman <dholman@gymli.org> | 2024-09-17 02:22:44 -0500 |
---|---|---|
committer | Danny Holman <dholman@gymli.org> | 2024-09-17 02:22:44 -0500 |
commit | 43e60465a0b5686f3db71c87a1d73717d93e9964 (patch) | |
tree | 0c6ccfce374291e6a13c78605d06bf3385a39c0d /ui/renderer.c | |
parent | 70c912b7d545515823d0b06953a8afe0253ab09c (diff) |
ui: add new subsystemv0.61
Add the UI subsystem. This subsystem will control the window display,
events and input.
Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to 'ui/renderer.c')
-rw-r--r-- | ui/renderer.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/ui/renderer.c b/ui/renderer.c new file mode 100644 index 0000000..a4220b1 --- /dev/null +++ b/ui/renderer.c @@ -0,0 +1,32 @@ +#include <rune/ui/renderer.h> +#include <rune/video/vulkan/renderer.h> +#include <rune/video/directx/renderer.h> +#include <rune/core/alloc.h> +#include <rune/core/logging.h> +#include <rune/core/abort.h> + +struct rune_renderer* rune_create_renderer(struct rune_window *window, int type) { + struct rune_renderer *ret = rune_alloc(sizeof(struct rune_renderer)); + ret->window = window; + + switch (type) { + case RUNE_RENDERER_VULKAN: + ret->init = rune_init_vulkan; + ret->close = rune_close_vulkan; + break; + case RUNE_RENDERER_DIRECTX: + ret->init = rune_init_directx; + ret->close = rune_close_directx; + break; + default: + log_output(LOG_FATAL, "Invalid rendering API selected"); + rune_abort(); + } + + (*ret->init)(ret); +} + +void rune_destroy_renderer(struct rune_renderer *renderer) { + (*renderer->close)(renderer); + rune_free(renderer); +} |