summaryrefslogtreecommitdiffstats
path: root/src/render/framegraph/qrendersurfaceselector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/framegraph/qrendersurfaceselector.cpp')
-rw-r--r--src/render/framegraph/qrendersurfaceselector.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/render/framegraph/qrendersurfaceselector.cpp b/src/render/framegraph/qrendersurfaceselector.cpp
index 349ceb827..e76963e72 100644
--- a/src/render/framegraph/qrendersurfaceselector.cpp
+++ b/src/render/framegraph/qrendersurfaceselector.cpp
@@ -43,7 +43,9 @@
#include <QtGui/QWindow>
#include <QtGui/QScreen>
#include <QtGui/QOffscreenSurface>
+#include <Qt3DCore/qentity.h>
#include <Qt3DCore/qpropertyupdatedchange.h>
+#include <Qt3DRender/qrendersettings.h>
QT_BEGIN_NAMESPACE
@@ -104,6 +106,30 @@ QRenderSurfaceSelectorPrivate::~QRenderSurfaceSelectorPrivate()
QObject::disconnect(m_screenConn);
}
+QRenderSurfaceSelector *QRenderSurfaceSelectorPrivate::find(QObject *rootObject)
+{
+ auto rendererSettings = rootObject->findChild<Qt3DRender::QRenderSettings *>();
+ if (!rendererSettings) {
+ qWarning() << "No renderer settings component found";
+ return nullptr;
+ }
+
+ auto frameGraphRoot = rendererSettings->activeFrameGraph();
+ if (!frameGraphRoot) {
+ qWarning() << "No active frame graph found";
+ return nullptr;
+ }
+
+ auto surfaceSelector = qobject_cast<Qt3DRender::QRenderSurfaceSelector *>(frameGraphRoot);
+ if (!surfaceSelector)
+ surfaceSelector = frameGraphRoot->findChild<Qt3DRender::QRenderSurfaceSelector *>();
+
+ if (!surfaceSelector)
+ qWarning() << "No render surface selector found in frame graph";
+
+ return surfaceSelector;
+}
+
void QRenderSurfaceSelectorPrivate::setExternalRenderTargetSize(const QSize &size)
{
m_externalRenderTargetSize = size;