Simplify static Renderer class implementation

This commit is contained in:
2025-03-07 22:12:01 +10:00
parent 3009a4c6d9
commit 8a635cc15f
2 changed files with 4 additions and 26 deletions

View File

@@ -10,20 +10,11 @@
#include <nova/render/render_api.h> #include <nova/render/render_api.h>
#include <nova/render/render_driver.h> #include <nova/render/render_driver.h>
#include <memory>
namespace Nova { namespace Nova {
class NOVA_API Renderer { class NOVA_API Renderer {
public: public:
static void create(RenderAPI api); static void create(RenderAPI api);
static void shutdown(); static void shutdown();
static Renderer* get();
static RenderDriver* get_driver(); static RenderDriver* get_driver();
private:
std::unique_ptr<RenderDriver> m_driver;
Renderer() = default;
~Renderer() = default;
}; };
} // namespace Nova } // namespace Nova

View File

@@ -12,17 +12,12 @@
using namespace Nova; using namespace Nova;
static Renderer* s_instance = nullptr; static std::unique_ptr<RenderDriver> s_driver;
void Renderer::create(const RenderAPI api) { void Renderer::create(const RenderAPI api) {
if (s_instance) {
// TODO: Log error
return;
}
s_instance = new Renderer();
switch (api) { switch (api) {
case RenderAPI::VULKAN: case RenderAPI::VULKAN:
get()->m_driver = std::make_unique<VulkanRenderDriver>(); s_driver = std::make_unique<VulkanRenderDriver>();
break; break;
default: default:
// TODO: Log error // TODO: Log error
@@ -31,17 +26,9 @@ void Renderer::create(const RenderAPI api) {
} }
void Renderer::shutdown() { void Renderer::shutdown() {
if (!s_instance) { s_driver.reset();
// TODO: Log error
return;
}
delete s_instance;
}
Renderer* Renderer::get() {
return s_instance;
} }
RenderDriver* Renderer::get_driver() { RenderDriver* Renderer::get_driver() {
return get()->m_driver.get(); return s_driver.get();
} }