Add basic Renderer and RenderDriver classes

This commit is contained in:
2025-02-12 00:59:07 +10:00
parent 5f718ff966
commit 3009a4c6d9
9 changed files with 186 additions and 23 deletions

View File

@@ -6,6 +6,6 @@
#pragma once
#include <nova/api.h>
NOVA_API void func();
namespace Nova {
enum class RenderAPI { VULKAN };
} // namespace Nova

View File

@@ -0,0 +1,21 @@
/**
* Copyright (c) 2025, Jayden Grubb <contact@jaydengrubb.com>
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#pragma once
#include <nova/api.h>
#include <nova/render/render_api.h>
#include <nova/types.h>
namespace Nova {
class NOVA_API RenderDriver {
public:
virtual ~RenderDriver() = default;
[[nodiscard]] virtual RenderAPI get_api() const = 0;
[[nodiscard]] virtual u32 get_api_version() const = 0;
};
} // namespace Nova

View File

@@ -0,0 +1,29 @@
/**
* Copyright (c) 2025, Jayden Grubb <contact@jaydengrubb.com>
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#pragma once
#include <nova/api.h>
#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