summaryrefslogtreecommitdiff
path: root/include/rune/render/renderer.h
diff options
context:
space:
mode:
authorDanny Holman <dholman@gymli.org>2024-10-25 23:18:06 -0500
committerDanny Holman <dholman@gymli.org>2024-10-25 23:18:06 -0500
commite879c0388fd9ebb6272eee9c12027f7637efbffc (patch)
treead83d2ca3e58d4fbfdb3a0f4fcb1d8ec9353566f /include/rune/render/renderer.h
parent29718f0e8e44de7da44526ca5490736c0bd94112 (diff)
render: move all rendering code out of ui
Move all the rendering code out of the UI subsystem. The new rendering API now has hooks that the UI code can make use of. Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to 'include/rune/render/renderer.h')
-rw-r--r--include/rune/render/renderer.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/include/rune/render/renderer.h b/include/rune/render/renderer.h
new file mode 100644
index 0000000..e95a0eb
--- /dev/null
+++ b/include/rune/render/renderer.h
@@ -0,0 +1,43 @@
+/*
+ * Rune Game Engine
+ * Copyright 2024 Danny Holman <dholman@gymli.org>
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty. In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ * claim that you wrote the original software. If you use this software
+ * in a product, an acknowledgment in the product documentation would be
+ * appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ */
+
+#ifndef RUNE_RENDER_RENDERER_H
+#define RUNE_RENDER_RENDERER_H
+
+#include <rune/util/types.h>
+#include <rune/ui/window.h>
+
+struct rune_renderer {
+ int (*init)(struct rune_window *window);
+ void (*close)(struct rune_renderer *renderer);
+ void (*draw)(void);
+ void (*clear)(void);
+};
+
+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