6#include <QtQuick3DRuntimeRender/private/qssgrendernode_p.h>
7#include <QtQuick3DRuntimeRender/private/qssgrenderbuffermanager_p.h>
8#include <QtQuick3DRuntimeRender/private/qssgrendershadercache_p.h>
9#include <QtQuick3DRuntimeRender/private/qssgrendercamera_p.h>
10#include <QtQuick3DRuntimeRender/private/qssgrendershaderlibrarymanager_p.h>
11#include <QtQuick3DRuntimeRender/private/qssgrendershadercodegenerator_p.h>
12#include <QtQuick3DRuntimeRender/private/qssgrenderdefaultmaterialshadergenerator_p.h>
13#include <QtQuick3DRuntimeRender/private/qssgrhicustommaterialsystem_p.h>
14#include <QtQuick3DRuntimeRender/private/qssgperframeallocator_p.h>
15#include <QtQuick3DRuntimeRender/private/qssgrenderer_p.h>
16#include <QtQuick3DRuntimeRender/private/qssgrendererutil_p.h>
17#include <QtQuick3DRuntimeRender/private/qssgdebugdrawsystem_p.h>
19#include <QtQuick/private/qquickwindow_p.h>
28void QSSGRenderContextInterface::init()
30 m_renderer->setRenderContextInterface(
this);
32 m_bufferManager->setRenderContextInterface(
this);
34 m_customMaterialSystem->setRenderContextInterface(
this);
36 m_shaderLibraryManager->loadPregeneratedShaderInfo();
39void QSSGRenderContextInterface::releaseCachedResources()
41 m_renderer->releaseCachedResources();
42 m_shaderCache->releaseCachedResources();
43 m_customMaterialSystem->releaseCachedResources();
44 m_bufferManager->releaseCachedResources();
45 m_rhiContext->releaseCachedResources();
49 std::unique_ptr<QSSGRenderer>
renderer,
50 std::shared_ptr<QSSGShaderLibraryManager> shaderLibraryManager,
51 std::unique_ptr<QSSGShaderCache> shaderCache,
52 std::unique_ptr<QSSGCustomMaterialSystem> customMaterialSystem,
53 std::unique_ptr<QSSGProgramGenerator> shaderProgramGenerator,
54 std::unique_ptr<QSSGRhiContext>
ctx,
55 std::unique_ptr<QSSGDebugDrawSystem> debugDrawSystem)
56 : m_rhiContext(
std::move(
ctx))
57 , m_shaderCache(
std::move(shaderCache))
58 , m_bufferManager(
std::move(bufferManager))
60 , m_shaderLibraryManager(
std::move(shaderLibraryManager))
61 , m_customMaterialSystem(
std::move(customMaterialSystem))
62 , m_shaderProgramGenerator(
std::move(shaderProgramGenerator))
63 , m_debugDrawSystem(
std::move(debugDrawSystem))
72 static auto shaderLibraryManager = std::make_shared<QSSGShaderLibraryManager>();
73 return shaderLibraryManager;
91 m_renderer->releaseCachedResources();
101 return m_bufferManager;
111 return m_shaderCache;
116 return m_shaderLibraryManager;
121 return m_customMaterialSystem;
126 return m_shaderProgramGenerator;
131 return m_debugDrawSystem;
136 return m_rhiContext->rhi();
141 m_renderer->cleanupResources(resources);
146 m_renderer->cleanupResources(resources);
152 m_bufferManager->cleanupUnreferencedBuffers(m_frameCount, inLayer);
158 m_bufferManager->resetUsageCounters(m_frameCount, inLayer);
163 if (allowRecursion) {
164 if (m_activeFrameRef++ != 0)
168 m_perFrameAllocator.
reset();
169 m_renderer->beginFrame(
layer);
175 return m_renderer->prepareLayerForRender(inLayer);
180 m_renderer->rhiPrepare(inLayer);
185 m_renderer->rhiRender(inLayer);
190 if (allowRecursion) {
191 if (--m_activeFrameRef != 0)
197 m_renderer->endFrame(
layer);
void rhiRender(QSSGRenderLayer &inLayer)
const std::unique_ptr< QSSGRhiContext > & rhiContext() const
void beginFrame(QSSGRenderLayer *layer, bool allowRecursion=true)
void resetResourceCounters(QSSGRenderLayer *inLayer)
QSSGRenderContextInterface(QRhi *rhi)
const std::unique_ptr< QSSGDebugDrawSystem > & debugDrawSystem() const
void cleanupUnreferencedBuffers(QSSGRenderLayer *inLayer)
const std::unique_ptr< QSSGProgramGenerator > & shaderProgramGenerator() const
const std::unique_ptr< QSSGCustomMaterialSystem > & customMaterialSystem() const
const std::shared_ptr< QSSGShaderLibraryManager > & shaderLibraryManager() const
const std::unique_ptr< QSSGBufferManager > & bufferManager() const
const std::unique_ptr< QSSGRenderer > & renderer() const
void rhiPrepare(QSSGRenderLayer &inLayer)
const std::unique_ptr< QSSGShaderCache > & shaderCache() const
bool prepareLayerForRender(QSSGRenderLayer &inLayer)
~QSSGRenderContextInterface()
void cleanupResources(QList< QSSGRenderGraphObject * > &resources)
bool endFrame(QSSGRenderLayer *layer, bool allowRecursion=true)
Combined button and popup list for selecting options.
static const std::shared_ptr< QSSGShaderLibraryManager > & q3ds_shaderLibraryManager()
static QT_BEGIN_NAMESPACE bool loadPregenratedShaders()
Q_CORE_EXPORT int qEnvironmentVariableIntValue(const char *varName, bool *ok=nullptr) noexcept
QSvgRenderer * renderer
[0]