mirror of
https://github.com/redstrate/Novus.git
synced 2025-05-14 12:37:46 +00:00
This will be used in the map editor to draw where objects are. It doesn't draw anything yet, and can't until we get LGB support in libphysis.
40 lines
No EOL
1 KiB
C++
40 lines
No EOL
1 KiB
C++
// SPDX-FileCopyrightText: 2024 Joshua Goins <josh@redstrate.com>
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include <QDebug>
|
|
#include <string_view>
|
|
|
|
#include <glm/glm.hpp>
|
|
#include <physis.hpp>
|
|
#include <spirv.hpp>
|
|
#include <spirv_cross.hpp>
|
|
#include <spirv_glsl.hpp>
|
|
#include <vulkan/vulkan.h>
|
|
|
|
class Renderer;
|
|
struct DrawObject;
|
|
struct Camera;
|
|
struct Texture;
|
|
struct Scene;
|
|
class Pass;
|
|
class Device;
|
|
|
|
/// Base class for all rendering implementations
|
|
class BaseRenderer
|
|
{
|
|
public:
|
|
virtual ~BaseRenderer() = default;
|
|
|
|
/// Perform any operations required on resize, such as recreating images.
|
|
virtual void resize() = 0;
|
|
|
|
/// Render a frame into @p commandBuffer. @p currentFrame is the same value as SwapChain::currentFrame for convenience.
|
|
virtual void render(VkCommandBuffer commandBuffer, Camera &camera, Scene &scene, const std::vector<DrawObject> &models) = 0;
|
|
|
|
/// The final composite texture that is drawn into with render()
|
|
virtual Texture &getCompositeTexture() = 0;
|
|
|
|
virtual Device &device() = 0;
|
|
}; |