Loading...
Searching...
No Matches
RenderState.hpp
1#pragma once
2#include <QOffscreenSurface>
3#include <QtGui/private/qrhi_p.h>
4
5#include <score_plugin_gfx_export.h>
6
7#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
8using QRhiBufferReadbackResult = QRhiReadbackResult;
9#endif
10
11class QOffscreenSurface;
12class QWindow;
13namespace score::gfx
14{
15class RenderList;
20{
21 Null,
22 OpenGL,
23 Vulkan,
24 D3D11,
25 Metal,
26 D3D12
27};
28
29class Window;
30
35{
36 RenderState() = default;
37 RenderState(const RenderState&) = delete;
38 RenderState(RenderState&&) = delete;
39 RenderState& operator=(const RenderState&) = delete;
40 RenderState& operator=(RenderState&&) = delete;
41
42 QRhi* rhi{};
43 QRhiRenderPassDescriptor* renderPassDescriptor{};
44 std::weak_ptr<RenderList> renderer{};
45
46 QOffscreenSurface* surface{};
47 std::weak_ptr<score::gfx::Window>
48 window{}; // Not always set, only used to get mouse events & such.
49 QSize renderSize{};
50 QSize outputSize{};
51 int samples{1};
52 GraphicsApi api{};
53 QShaderVersion version{};
54
55 void destroy()
56 {
57 window.reset();
58
59 delete rhi;
60 rhi = nullptr;
61
62 delete surface;
63 surface = nullptr;
64 }
65};
66
67SCORE_PLUGIN_GFX_EXPORT
68std::shared_ptr<RenderState>
69createRenderState(GraphicsApi graphicsApi, QSize sz, QWindow* window);
70}
Graphics rendering pipeline for ossia score.
Definition Filter/PreviewWidget.hpp:12
GraphicsApi
Available graphics APIs to use.
Definition RenderState.hpp:20
Global state associated to a rendering context.
Definition RenderState.hpp:35