Simplify static Renderer class implementation
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user