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_driver.h>
#include <memory>
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<RenderDriver> m_driver;
Renderer() = default;
~Renderer() = default;
};
} // namespace Nova

View File

@@ -12,17 +12,12 @@
using namespace Nova;
static Renderer* s_instance = nullptr;
static std::unique_ptr<RenderDriver> 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<VulkanRenderDriver>();
s_driver = std::make_unique<VulkanRenderDriver>();
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();
}