vkmEngine 1.0.0
A C++ game engine · vkmengine.com
Loading...
Searching...
No Matches
render_system.h
1#pragma once
2
3#include <memory>
4#include <string>
5
6#include "core/system.h"
7#include "system/render/render_backend.h"
8#include "system/render/render_settings.h"
9#include "system/render/render_view.h"
10
11namespace Vkm::Engine {
12
19class RenderSystem : public System {
20 public:
21 RenderSystem() = default;
22 ~RenderSystem() override = default;
23
24 RenderSystem(const RenderSystem& other) = delete;
25 RenderSystem& operator=(const RenderSystem& other) = delete;
26
27 RenderSystem(RenderSystem && other) = delete;
28 RenderSystem& operator=(RenderSystem && other) = delete;
29
30 public:
39 void update(FrameContext& ctx) override;
40
50 void setBackend(std::unique_ptr<RenderBackend> backend, WindowManager& window);
51
61 void releaseUploadedPixels(bool release) { m_releaseUploadedPixels = release; }
62
68 BackendInfo backendInfo() const { return m_backend ? m_backend->info() : BackendInfo{}; }
69
75 uint32_t maxAnisotropy() const { return m_backend ? m_backend->maxAnisotropy() : 1; }
76
82 RenderBackend* backend() const { return m_backend.get(); }
83
84 private:
90 void writeScreenshot(const std::string& path);
91
97 void releaseHeldPixels(ResourceManager& resources) const;
98
99 private:
100 std::unique_ptr<RenderBackend> m_backend;
101
102 RenderView m_view;
103
104 bool m_releaseUploadedPixels = false;
105};
106
107} // namespace Vkm::Engine
The frame's seam between the engine and the graphics API.
Definition render_backend.h:35
void releaseUploadedPixels(bool release)
Free each texture's CPU pixels once the backend holds them.
Definition render_system.h:61
RenderBackend * backend() const
The active backend, or nullptr before setBackend().
Definition render_system.h:82
void setBackend(std::unique_ptr< RenderBackend > backend, WindowManager &window)
Bring a backend up against the window and draw through it.
void update(FrameContext &ctx) override
Run one frame of rendering.
BackendInfo backendInfo() const
Identity of the active backend, for status displays.
Definition render_system.h:68
uint32_t maxAnisotropy() const
The active backend's anisotropic-filtering ceiling.
Definition render_system.h:75
Open type-erased resource registry with typed handles and generational lifetimes.
Definition resource_manager.h:46
Owns the application's window, GL context, input, and frame limiting.
Definition window_manager.h:61
Human-readable backend identity, for a status display.
Definition render_backend.h:23
Per-frame state bundle passed to every system.
Definition system.h:55
The backend-agnostic view of the frame handed to RenderBackend::render.
Definition render_view.h:34