Add basic Renderer and RenderDriver classes
This commit is contained in:
31
engine/src/drivers/vulkan/render_driver.cpp
Normal file
31
engine/src/drivers/vulkan/render_driver.cpp
Normal file
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* Copyright (c) 2025, Jayden Grubb <contact@jaydengrubb.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include "drivers/vulkan/render_driver.h"
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
using namespace Nova;
|
||||
|
||||
VulkanRenderDriver::VulkanRenderDriver() {
|
||||
std::printf("VulkanRenderDriver::VulkanRenderDriver()\n");
|
||||
}
|
||||
|
||||
VulkanRenderDriver::~VulkanRenderDriver() {
|
||||
std::printf("VulkanRenderDriver::~VulkanRenderDriver()\n");
|
||||
}
|
||||
|
||||
RenderAPI VulkanRenderDriver::get_api() const {
|
||||
return RenderAPI::VULKAN;
|
||||
}
|
||||
|
||||
u32 VulkanRenderDriver::get_api_version() const {
|
||||
u32 version;
|
||||
vkEnumerateInstanceVersion(&version);
|
||||
return version;
|
||||
}
|
||||
20
engine/src/drivers/vulkan/render_driver.h
Normal file
20
engine/src/drivers/vulkan/render_driver.h
Normal file
@@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Copyright (c) 2025, Jayden Grubb <contact@jaydengrubb.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <nova/render/render_driver.h>
|
||||
|
||||
namespace Nova {
|
||||
class VulkanRenderDriver final : public RenderDriver {
|
||||
public:
|
||||
VulkanRenderDriver();
|
||||
~VulkanRenderDriver() override;
|
||||
|
||||
[[nodiscard]] RenderAPI get_api() const override;
|
||||
[[nodiscard]] u32 get_api_version() const override;
|
||||
};
|
||||
} // namespace Nova
|
||||
47
engine/src/render/renderer.cpp
Normal file
47
engine/src/render/renderer.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
/**
|
||||
* Copyright (c) 2025, Jayden Grubb <contact@jaydengrubb.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include <nova/render/renderer.h>
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "drivers/vulkan/render_driver.h"
|
||||
|
||||
using namespace Nova;
|
||||
|
||||
static Renderer* s_instance = nullptr;
|
||||
|
||||
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>();
|
||||
break;
|
||||
default:
|
||||
// TODO: Log error
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Renderer::shutdown() {
|
||||
if (!s_instance) {
|
||||
// TODO: Log error
|
||||
return;
|
||||
}
|
||||
delete s_instance;
|
||||
}
|
||||
|
||||
Renderer* Renderer::get() {
|
||||
return s_instance;
|
||||
}
|
||||
|
||||
RenderDriver* Renderer::get_driver() {
|
||||
return get()->m_driver.get();
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2025, Jayden Grubb <contact@jaydengrubb.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include <nova/test.h>
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
void func() {
|
||||
std::printf("Hello, world!\n");
|
||||
}
|
||||
Reference in New Issue
Block a user