diff options
| author | hachem <im@hachem.wtf> | 2026-08-20 02:12:52 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-08-20 02:25:57 +0200 |
| commit | 0f9483ce025b015b1197b7a7efc8ed983bedbb8e (patch) | |
| tree | 3984c728052cb21e88550248f3ff2fb2fece41a3 /src/rendering/renderer.h | |
| parent | 0802ee19573e880e319a61ae814ee42c01e28cd3 (diff) | |
refactor: trailing return types in rendering
Diffstat (limited to 'src/rendering/renderer.h')
| -rw-r--r-- | src/rendering/renderer.h | 110 |
1 files changed, 56 insertions, 54 deletions
diff --git a/src/rendering/renderer.h b/src/rendering/renderer.h index ea200db..189723d 100644 --- a/src/rendering/renderer.h +++ b/src/rendering/renderer.h @@ -9,124 +9,126 @@ namespace Donut { - class RendererAPI + class RendererAPI { public: - enum class API + enum class API { - None = 0, + None = 0, OpenGL = 1, Vulkan = 2, }; + public: virtual ~RendererAPI() = default; - 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; + virtual auto init() -> void = 0; + virtual auto set_viewport(uint32_t x, uint32_t y, + uint32_t width, uint32_t height) -> void = 0; + virtual auto set_clear_color(const glm::vec4& color) -> void = 0; + virtual auto clear() -> void = 0; + virtual auto enable_depth_test() -> void = 0; + virtual auto disable_depth_test() -> void = 0; + virtual auto set_face_culling(bool enabled) -> void = 0; + virtual auto enable_blending() -> void = 0; + virtual auto disable_blending() -> void = 0; + + virtual auto draw_indexed(const Ref<VertexArray>& vertex_array, + uint32_t index_count = 0) -> void = 0; + + virtual auto draw_arrays(uint32_t vertex_count, uint32_t first = 0) -> void = 0; + virtual auto draw_lines(const Ref<VertexArray>& vertex_array, + uint32_t index_count = 0) -> void = 0; + virtual auto bind_texture(uint32_t texture_id, uint32_t slot = 0) -> void = 0; + virtual auto bind_image_texture(uint32_t texture_id, + uint32_t slot = 0, + bool read_only = false) -> void = 0; + virtual auto read_pixels(uint32_t x, uint32_t y, uint32_t width, uint32_t height, + uint32_t format, uint32_t type, void* pixels) -> void = 0; - virtual void draw_indexed(const Ref<VertexArray>& vertex_array, - 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; - virtual void read_pixels(uint32_t x, uint32_t y, uint32_t width, uint32_t height, - uint32_t format, uint32_t type, void* pixels) = 0; + inline static auto get_api() -> API { return s_api; } + inline static auto set_api(API api) -> void { s_api = api; } + static auto create() -> Scope<RendererAPI>; - inline static API get_api() { return s_api; } - inline static void set_api(API api) { s_api = api; } - static Scope<RendererAPI> create(); private: static API s_api; }; - class RenderCommand + class RenderCommand { public: - inline static void init() + inline static auto init() -> void { s_renderer_api->init(); } - inline static void set_viewport(uint32_t x, uint32_t y, uint32_t width, uint32_t height) + inline static auto set_viewport(uint32_t x, uint32_t y, uint32_t width, uint32_t height) -> void { s_renderer_api->set_viewport(x, y, width, height); } - inline static void set_clear_color(const glm::vec4& color) + inline static auto set_clear_color(const glm::vec4& color) -> void { s_renderer_api->set_clear_color(color); } - inline static void clear() + inline static auto clear() -> void { s_renderer_api->clear(); } - inline static void enable_depth_test() + inline static auto enable_depth_test() -> void { s_renderer_api->enable_depth_test(); } - inline static void disable_depth_test() + inline static auto disable_depth_test() -> void { s_renderer_api->disable_depth_test(); } - inline static void set_face_culling(bool enabled) + inline static auto set_face_culling(bool enabled) -> void { s_renderer_api->set_face_culling(enabled); } - inline static void enable_blending() + inline static auto enable_blending() -> void { s_renderer_api->enable_blending(); } - inline static void disable_blending() + inline static auto disable_blending() -> void { s_renderer_api->disable_blending(); } - inline static void draw_indexed(const Ref<VertexArray>& vertex_array, uint32_t index_count = 0) + inline static auto draw_indexed(const Ref<VertexArray>& vertex_array, uint32_t index_count = 0) -> void { s_renderer_api->draw_indexed(vertex_array, index_count); } - inline static void draw_arrays(uint32_t vertex_count, uint32_t first = 0) + inline static auto draw_arrays(uint32_t vertex_count, uint32_t first = 0) -> void { s_renderer_api->draw_arrays(vertex_count, first); } - inline static void draw_lines(const Ref<VertexArray>& vertex_array, uint32_t index_count = 0) + inline static auto draw_lines(const Ref<VertexArray>& vertex_array, uint32_t index_count = 0) -> void { s_renderer_api->draw_lines(vertex_array, index_count); } - inline static void bind_texture(uint32_t texture_id, uint32_t slot = 0) + inline static auto bind_texture(uint32_t texture_id, uint32_t slot = 0) -> void { 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) + inline static auto bind_image_texture(uint32_t texture_id, uint32_t slot = 0, bool read_only = false) -> void { s_renderer_api->bind_image_texture(texture_id, slot, read_only); } - inline static void read_pixels(uint32_t x, uint32_t y, uint32_t width, uint32_t height, - uint32_t format, uint32_t type, void* pixels) + inline static auto read_pixels(uint32_t x, uint32_t y, uint32_t width, uint32_t height, + uint32_t format, uint32_t type, void* pixels) -> void { s_renderer_api->read_pixels(x, y, width, height, format, type, pixels); } @@ -135,22 +137,22 @@ namespace Donut static Scope<RendererAPI> s_renderer_api; }; - class Renderer + class Renderer { public: - static void init(); - static void shutdown(); + static auto init() -> void; + static auto shutdown() -> void; - static void on_window_resize(uint32_t width, uint32_t height); + static auto on_window_resize(uint32_t width, uint32_t height) -> void; - static void submit(const Ref<Shader>& shader, + static auto submit(const Ref<Shader>& shader, const Ref<VertexArray>& vertex_array, const glm::mat4& transform, - const glm::mat4& view_projection); + const glm::mat4& view_projection) -> void; - static void set_clear_color(const glm::vec4& color); - static void clear(); + static auto set_clear_color(const glm::vec4& color) -> void; + static auto clear() -> void; - inline static RendererAPI::API get_api() { return RendererAPI::get_api(); } + inline static auto get_api() -> RendererAPI::API { return RendererAPI::get_api(); } }; }; |
