From 4172869e54093eee6e1595ebe0fa55c9fe98aef7 Mon Sep 17 00:00:00 2001 From: hachem Date: Fri, 15 Aug 2025 03:18:29 +0200 Subject: [help]: Complete first geodesic 3d raytracing --- src/Rendering/Renderer.h | 52 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 12 deletions(-) (limited to 'src/Rendering/Renderer.h') diff --git a/src/Rendering/Renderer.h b/src/Rendering/Renderer.h index b2a44a4..d6c4154 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 SetViewport(uint32_t x, uint32_t y, - uint32_t width, uint32_t height) = 0; - virtual void SetClearColor(const glm::vec4& color) = 0; - virtual void Clear() = 0; - virtual void EnableDepthTest() = 0; - virtual void DisableDepthTest() = 0; - virtual void SetFaceCulling(bool enabled) = 0; - virtual void EnableBlending() = 0; - virtual void DisableBlending() = 0; + uint32_t width, uint32_t height) = 0; + virtual void SetClearColor(const glm::vec4& color) = 0; + virtual void Clear() = 0; + virtual void EnableDepthTest() = 0; + virtual void DisableDepthTest() = 0; + virtual void SetFaceCulling(bool enabled) = 0; + virtual void EnableBlending() = 0; + virtual void DisableBlending() = 0; virtual void DrawIndexed(const Ref& vertexArray, - uint32_t indexCount = 0) = 0; + uint32_t indexCount = 0) = 0; + + virtual void DrawArrays(uint32_t vertexCount, uint32_t first = 0) = 0; + virtual void DrawLines(const Ref& vertexArray, + uint32_t indexCount = 0) = 0; + virtual void BindTexture(uint32_t textureID, uint32_t slot = 0) = 0; + virtual void BindImageTexture(uint32_t textureID, + uint32_t slot = 0, + bool readOnly = false) = 0; inline static API GetAPI() { return s_API; } inline static void SetAPI(API api) { s_API = api; } - static Ref Create(); + static Scope Create(); private: static API s_API; }; @@ -94,8 +102,28 @@ namespace Donut s_RendererAPI->DrawIndexed(vertexArray, indexCount); } + inline static void DrawArrays(uint32_t vertexCount, uint32_t first = 0) + { + s_RendererAPI->DrawArrays(vertexCount, first); + } + + inline static void DrawLines(const Ref& vertexArray, uint32_t indexCount = 0) + { + s_RendererAPI->DrawLines(vertexArray, indexCount); + } + + inline static void BindTexture(uint32_t textureID, uint32_t slot = 0) + { + s_RendererAPI->BindTexture(textureID, slot); + } + + inline static void BindImageTexture(uint32_t textureID, uint32_t slot = 0, bool readOnly = false) + { + s_RendererAPI->BindImageTexture(textureID, slot, readOnly); + } + private: - static Ref s_RendererAPI; + static Scope s_RendererAPI; }; class Renderer -- cgit v1.3