diff options
| author | hachem <im@hachem.wtf> | 2025-08-15 03:18:29 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2025-08-15 03:18:29 +0200 |
| commit | a6655eebe2a69ee427264bd43df5747851ed96df (patch) | |
| tree | fa8c6ef862898a3d8e19250698dca0d9aaf4f9c2 /src/rendering/renderer.h | |
| parent | 3d8d3259e1cf5a7d88e5d1e530cc8c9bf9140734 (diff) | |
feat: complete first geodesic 3D raytracing
Diffstat (limited to 'src/rendering/renderer.h')
| -rw-r--r-- | src/rendering/renderer.h | 52 |
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 |
