From f28664ac0fa8282187f8a4d4552ce5dce895df85 Mon Sep 17 00:00:00 2001 From: bobi Date: Thu, 18 Dec 2025 14:16:16 +0100 Subject: [PATCH] Fix: improve usage of renderer remove hardcoded things like clearcolor, vertices, etc ... --- .../include/Interfaces/Renderer/IRenderer.hpp | 12 +++++++++++- plugins/Renderer/OpenGL/include/OPGL/OPGL.hpp | 4 +++- plugins/Renderer/OpenGL/src/opgl.cpp | 4 ++-- plugins/Renderer/Vulkan/include/VULKN/VULKN.hpp | 7 +++++-- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/modules/Interfaces/include/Interfaces/Renderer/IRenderer.hpp b/modules/Interfaces/include/Interfaces/Renderer/IRenderer.hpp index 0a92907..17d65dc 100644 --- a/modules/Interfaces/include/Interfaces/Renderer/IRenderer.hpp +++ b/modules/Interfaces/include/Interfaces/Renderer/IRenderer.hpp @@ -11,6 +11,14 @@ namespace cae { + struct Color + { + float r; + float g; + float b; + float a; + }; + /// /// @interface IRenderer /// @brief Interface for renderer @@ -22,12 +30,14 @@ namespace cae public: ~IRenderer() override = default; - virtual void initialize(const NativeWindowHandle &nativeWindowHandle) = 0; + virtual void initialize(const NativeWindowHandle &nativeWindowHandle, const Color& clearColor = { 1.F, 1.F, 1.F, 1.F}) = 0; virtual void draw(const WindowSize &windowSize) = 0; virtual void setVSyncEnabled(bool enabled) = 0; virtual bool isVSyncEnabled() const = 0; + virtual void setClearColor(const Color& color) = 0; + }; // interface IRenderer } // namespace cae diff --git a/plugins/Renderer/OpenGL/include/OPGL/OPGL.hpp b/plugins/Renderer/OpenGL/include/OPGL/OPGL.hpp index aa6c802..2d35269 100644 --- a/plugins/Renderer/OpenGL/include/OPGL/OPGL.hpp +++ b/plugins/Renderer/OpenGL/include/OPGL/OPGL.hpp @@ -34,12 +34,14 @@ namespace cae [[nodiscard]] utl::PluginType getType() const override { return utl::PluginType::RENDERER; } [[nodiscard]] utl::PluginPlatform getPlatform() const override { return utl::PluginPlatform::ALL; } - void initialize(const NativeWindowHandle &window) override; + void initialize(const NativeWindowHandle &window, const Color& clearColor) override; void draw(const WindowSize &windowSize) override; void setVSyncEnabled(bool enabled) override; [[nodiscard]] bool isVSyncEnabled() const override; + void setClearColor(const Color& color) override { glClearColor(color.r, color.g, color.b, color.a); } + private: std::unique_ptr m_context; diff --git a/plugins/Renderer/OpenGL/src/opgl.cpp b/plugins/Renderer/OpenGL/src/opgl.cpp index 601bda7..2af4c5d 100644 --- a/plugins/Renderer/OpenGL/src/opgl.cpp +++ b/plugins/Renderer/OpenGL/src/opgl.cpp @@ -12,7 +12,7 @@ #include "OPGL/Context/NSGLContextMac.hpp" #endif -void cae::OPGL::initialize(const NativeWindowHandle &window) +void cae::OPGL::initialize(const NativeWindowHandle &window, const Color& clearColor) { #ifdef __linux__ m_context = std::make_unique(); @@ -26,7 +26,7 @@ void cae::OPGL::initialize(const NativeWindowHandle &window) m_context->initialize(window); glEnable(GL_DEPTH_TEST); - glClearColor(1.F, 1.F, 1.F, 1.F); + glClearColor(clearColor.r, clearColor.g, clearColor.b, clearColor.a); createShaderProgram(); createTriangle(); diff --git a/plugins/Renderer/Vulkan/include/VULKN/VULKN.hpp b/plugins/Renderer/Vulkan/include/VULKN/VULKN.hpp index cda878b..5a59b20 100644 --- a/plugins/Renderer/Vulkan/include/VULKN/VULKN.hpp +++ b/plugins/Renderer/Vulkan/include/VULKN/VULKN.hpp @@ -32,11 +32,14 @@ namespace cae [[nodiscard]] utl::PluginType getType() const override { return utl::PluginType::RENDERER; } [[nodiscard]] utl::PluginPlatform getPlatform() const override { return utl::PluginPlatform::ALL; } - void initialize(const NativeWindowHandle &nativeWindowHandle) override {} - void draw(const WindowSize &windowSize) override {}; + void initialize(const NativeWindowHandle &nativeWindowHandle, const Color& clearColor) override {} + void draw(const WindowSize &windowSize) override {} void setVSyncEnabled(bool enabled) override {} [[nodiscard]] bool isVSyncEnabled() const override { return false; } + + void setClearColor(const Color& color) override {} + }; // class VULKN } // namespace cae \ No newline at end of file