blob: a4220b17ec36f4517ed10ced132de6552bdcecce (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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);
}
|