hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/src/rendering/renderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/rendering/renderer.h')
-rw-r--r--src/rendering/renderer.h52
1 files changed, 40 insertions, 12 deletions
diff --git a/src/rendering/renderer.h b/src/rendering/renderer.h
index 4a028e5..67ad998 100644
--- a/src/rendering/renderer.h
+++ b/src/rendering/renderer.h
@@ -20,23 +20,31 @@ namespace Donut
public:
virtual ~RendererAPI() = default;
- virtual void init() = 0;
+ virtual void init() = 0;
virtual void set_viewport(uint32_t x, uint32_t y,
- uint32_t width, uint32_t height) = 0;
- virtual void set_clear_color(const glm::vec4& color) = 0;
- virtual void clear() = 0;
- virtual void enable_depth_test() = 0;
- virtual void disable_depth_test() = 0;
- virtual void set_face_culling(bool enabled) = 0;
- virtual void enable_blending() = 0;
- virtual void disable_blending() = 0;
+ uint32_t width, uint32_t height) = 0;
+ virtual void set_clear_color(const glm::vec4& color) = 0;
+ virtual void clear() = 0;
+ virtual void enable_depth_test() = 0;
+ virtual void disable_depth_test() = 0;
+ virtual void set_face_culling(bool enabled) = 0;
+ virtual void enable_blending() = 0;
+ virtual void disable_blending() = 0;
virtual void draw_indexed(const Ref<VertexArray>& vertex_array,
- uint32_t index_count = 0) = 0;
+ uint32_t index_count = 0) = 0;
+
+ virtual void draw_arrays(uint32_t vertex_count, uint32_t first = 0) = 0;
+ virtual void draw_lines(const Ref<VertexArray>& vertex_array,
+ uint32_t index_count = 0) = 0;
+ virtual void bind_texture(uint32_t texture_id, uint32_t slot = 0) = 0;
+ virtual void bind_image_texture(uint32_t texture_id,
+ uint32_t slot = 0,
+ bool read_only = false) = 0;
inline static API get_api() { return s_api; }
inline static void set_api(API api) { s_api = api; }
- static Ref<RendererAPI> create();
+ static Scope<RendererAPI> create();
private:
static API s_api;
};
@@ -94,8 +102,28 @@ namespace Donut
s_renderer_api->draw_indexed(vertex_array, index_count);
}
+ inline static void draw_arrays(uint32_t vertex_count, uint32_t first = 0)
+ {
+ s_renderer_api->draw_arrays(vertex_count, first);
+ }
+
+ inline static void draw_lines(const Ref<VertexArray>& vertex_array, uint32_t index_count = 0)
+ {
+ s_renderer_api->draw_lines(vertex_array, index_count);
+ }
+
+ inline static void bind_texture(uint32_t texture_id, uint32_t slot = 0)
+ {
+ s_renderer_api->bind_texture(texture_id, slot);
+ }
+
+ inline static void bind_image_texture(uint32_t texture_id, uint32_t slot = 0, bool read_only = false)
+ {
+ s_renderer_api->bind_image_texture(texture_id, slot, read_only);
+ }
+
private:
- static Ref<RendererAPI> s_renderer_api;
+ static Scope<RendererAPI> s_renderer_api;
};
class Renderer