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.h110
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(); }
};
};