diff --git a/engine/include/nova/render/renderer.h b/engine/include/nova/render/renderer.h index 0de1086..a83a1c4 100644 --- a/engine/include/nova/render/renderer.h +++ b/engine/include/nova/render/renderer.h @@ -10,20 +10,11 @@ #include #include -#include - namespace Nova { class NOVA_API Renderer { public: static void create(RenderAPI api); static void shutdown(); - static Renderer* get(); static RenderDriver* get_driver(); - - private: - std::unique_ptr m_driver; - - Renderer() = default; - ~Renderer() = default; }; } // namespace Nova diff --git a/engine/src/render/renderer.cpp b/engine/src/render/renderer.cpp index 7e202b8..2cd3b65 100644 --- a/engine/src/render/renderer.cpp +++ b/engine/src/render/renderer.cpp @@ -12,17 +12,12 @@ using namespace Nova; -static Renderer* s_instance = nullptr; +static std::unique_ptr s_driver; void Renderer::create(const RenderAPI api) { - if (s_instance) { - // TODO: Log error - return; - } - s_instance = new Renderer(); switch (api) { case RenderAPI::VULKAN: - get()->m_driver = std::make_unique(); + s_driver = std::make_unique(); break; default: // TODO: Log error @@ -31,17 +26,9 @@ void Renderer::create(const RenderAPI api) { } void Renderer::shutdown() { - if (!s_instance) { - // TODO: Log error - return; - } - delete s_instance; -} - -Renderer* Renderer::get() { - return s_instance; + s_driver.reset(); } RenderDriver* Renderer::get_driver() { - return get()->m_driver.get(); + return s_driver.get(); }