1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-05-14 12:37:46 +00:00
novus/renderer/include/baserenderer.h
Joshua Goins 93bb7fec43 Begin adding support for drawing additional objects in the renderer
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.
2025-05-13 15:19:11 -04:00

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;
};