Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
Loading...
Searching...
No Matches
BaseRenderer.hpp
1#pragma once
2
3#include <entt/entt.hpp>
4#include <glm/glm.hpp>
5
6#include <Common/Rendering/GeometryRenderingStats.hpp>
7#include <Common/Rendering/RenderGraphBuilder.hpp>
8#include <Common/Graphics/CommandBuffer.hpp>
9#include <EngineCore/WorldContext/WorldContextSet.hpp>
10
11namespace Grindstone {
12 namespace GraphicsAPI {
13 class RenderPass;
14 class Framebuffer;
15 class CommandBuffer;
16 }
17
18 namespace Events {
19 struct BaseEvent;
20 }
21
23 public:
24 struct RenderMode {
25 const char* name = nullptr;
26 };
27
28 virtual ~BaseRenderer() {};
29 virtual bool OnWindowResize(Events::BaseEvent*) = 0;
30 virtual void Resize(uint32_t width, uint32_t height) = 0;
31 virtual void Render(
32 GraphicsAPI::CommandBuffer* commandBuffer,
33 Grindstone::WorldContextSet& worldContextSet,
34 glm::mat4 projectionMatrix,
35 glm::mat4 viewMatrix,
36 glm::vec3 eyePos,
40 ) = 0;
41 virtual uint16_t GetRenderModeCount() const = 0;
42 virtual const RenderMode* GetRenderModes() const = 0;
43 virtual void SetRenderMode(uint16_t mode) = 0;
44 virtual std::vector<Grindstone::Rendering::GeometryRenderStats> GetRenderingStats() = 0;
45 };
46
48 public:
49 virtual Grindstone::BaseRenderer* CreateRenderer(GraphicsAPI::RenderPass* targetRenderPass) = 0;
50 virtual ~BaseRendererFactory() {}
51 };
52}
Definition BaseRenderer.hpp:47
Definition BaseRenderer.hpp:22
Definition CommandBuffer.hpp:109
Definition Framebuffer.hpp:16
Definition RenderPass.hpp:10
Definition RenderGraphBuilder.hpp:12
Definition WorldContextSet.hpp:11
Definition BaseRenderer.hpp:24
Definition BaseEvent.hpp:7
Definition RenderGraphResourceRef.hpp:51