diff options
author | Morten Johan Sørvig <morten.sorvig@digia.com> | 2012-11-21 14:26:05 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-12-01 11:33:17 +0100 |
commit | 9c9ad9b86f5ae30df1021300d1b775f6d341a78f (patch) | |
tree | e27cb835da4b41a7a3fa345ea0f53195a317929d /src | |
parent | 2ebb2fce87642ef0da8629bdb27164fffbdcdcb9 (diff) |
Qt Quick high-dpi support.
Set the device and viewport rect to the full device
pixel size. Set the projection matrix to the device
independent pixel size.
Scale shader effect source texture sizes.
Change-Id: I61dd546ff36a7ce6ad05f908796555674c714c1a
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/qquickshadereffectsource.cpp | 5 | ||||
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 7 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/quick/items/qquickshadereffectsource.cpp b/src/quick/items/qquickshadereffectsource.cpp index 547e2141f6..2b613df0f2 100644 --- a/src/quick/items/qquickshadereffectsource.cpp +++ b/src/quick/items/qquickshadereffectsource.cpp @@ -955,6 +955,11 @@ QSGNode *QQuickShaderEffectSource::updatePaintNode(QSGNode *oldNode, UpdatePaint ? QSize(qCeil(qAbs(sourceRect.width())), qCeil(qAbs(sourceRect.height()))) : m_textureSize; Q_ASSERT(!textureSize.isEmpty()); + + // Crate large textures on high-dpi displays. + if (sourceItem() && sourceItem()->window()) + textureSize *= sourceItem()->window()->devicePixelRatio(); + QQuickItemPrivate *d = static_cast<QQuickItemPrivate *>(QObjectPrivate::get(this)); const QSize minTextureSize = d->sceneGraphContext()->minimumFBOSize(); // Keep power-of-two by doubling the size. diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index 2ce91cdc2c..a915430616 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -336,14 +336,15 @@ void QQuickWindowPrivate::renderSceneGraph(const QSize &size) Q_Q(QQuickWindow); emit q->beforeRendering(); int fboId = 0; - renderer->setDeviceRect(QRect(QPoint(0, 0), size)); + const qreal devicePixelRatio = q->devicePixelRatio(); + renderer->setDeviceRect(QRect(QPoint(0, 0), size * devicePixelRatio)); if (renderTargetId) { fboId = renderTargetId; renderer->setViewportRect(QRect(QPoint(0, 0), renderTargetSize)); } else { - renderer->setViewportRect(QRect(QPoint(0, 0), size)); + renderer->setViewportRect(QRect(QPoint(0, 0), size * devicePixelRatio)); } - renderer->setProjectionMatrixToDeviceRect(); + renderer->setProjectionMatrixToRect(QRect(QPoint(0, 0), size)); context->renderNextFrame(renderer, fboId); emit q->afterRendering(); |