summaryrefslogtreecommitdiffstats
path: root/tests/manual/deferred-renderer-cpp/deferredrenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/deferred-renderer-cpp/deferredrenderer.cpp')
-rw-r--r--tests/manual/deferred-renderer-cpp/deferredrenderer.cpp34
1 files changed, 26 insertions, 8 deletions
diff --git a/tests/manual/deferred-renderer-cpp/deferredrenderer.cpp b/tests/manual/deferred-renderer-cpp/deferredrenderer.cpp
index 5d613fef8..48f8ad3fe 100644
--- a/tests/manual/deferred-renderer-cpp/deferredrenderer.cpp
+++ b/tests/manual/deferred-renderer-cpp/deferredrenderer.cpp
@@ -64,7 +64,9 @@ DeferredRenderer::DeferredRenderer(Qt3DCore::QNode *parent)
, m_geometryPassFilter(new Qt3DRender::QRenderPassFilter(m_clearGBuffer))
, m_finalPassFilter(new Qt3DRender::QRenderPassFilter(m_clearScreenQuad))
, m_sceneCameraSelector(new Qt3DRender::QCameraSelector(m_geometryPassFilter))
+ , m_winSize(new Qt3DRender::QParameter(QStringLiteral("winSize"), QSizeF(1024.0f, 768.0f)))
, m_gBuffer(new GBuffer(this))
+ , m_window(nullptr)
{
m_clearGBuffer->setBuffers(Qt3DRender::QClearBuffers::ColorDepthBuffer);
m_clearScreenQuad->setBuffers(Qt3DRender::QClearBuffers::ColorDepthBuffer);
@@ -73,13 +75,7 @@ DeferredRenderer::DeferredRenderer(Qt3DCore::QNode *parent)
m_finalPassFilter->addParameter(new Qt3DRender::QParameter(QStringLiteral("position"), m_gBuffer->positionTexture()));
m_finalPassFilter->addParameter(new Qt3DRender::QParameter(QStringLiteral("normal"), m_gBuffer->normalTexture()));
m_finalPassFilter->addParameter(new Qt3DRender::QParameter(QStringLiteral("color"), m_gBuffer->colorTexture()));
-
- Qt3DRender::QParameter *winSize = new Qt3DRender::QParameter(QStringLiteral("winSize"), QSize(1024, 768));
- QObject::connect(m_surfaceSelector, &Qt3DRender::QRenderSurfaceSelector::externalRenderTargetSizeChanged,
- [=] (const QSize &viewSize) {
- winSize->setValue(viewSize);
- });
- m_finalPassFilter->addParameter(winSize);
+ m_finalPassFilter->addParameter(m_winSize);
}
void DeferredRenderer::setSceneCamera(Qt3DCore::QEntity *camera)
@@ -111,5 +107,27 @@ void DeferredRenderer::setScreenQuadLayer(Qt3DRender::QLayer *layer)
void DeferredRenderer::setSurface(QWindow *surface)
{
- m_surfaceSelector->setSurface(surface);
+ if (surface != m_window) {
+
+ // Disconnect old window's signals
+ if (m_window != nullptr) {
+ QObject::disconnect(m_widthChangedConnection);
+ QObject::disconnect(m_heightChangedConnection);
+ }
+
+ m_window = surface;
+ m_surfaceSelector->setSurface(surface);
+
+ if (m_window != nullptr) {
+ // Store connections
+ m_widthChangedConnection = QObject::connect(surface, &QWindow::widthChanged,
+ [this] (int width) {
+ m_winSize->setValue(QSizeF(float(width), m_winSize->value().toSizeF().height()));
+ });
+ m_heightChangedConnection = QObject::connect(surface, &QWindow::heightChanged,
+ [this] (int height) {
+ m_winSize->setValue(QSizeF(m_winSize->value().toSizeF().width(), float(height)));
+ });
+ }
+ }
}