summaryrefslogtreecommitdiffstats
path: root/src/render/graphicshelpers/graphicscontext.cpp
diff options
context:
space:
mode:
authorAntti Määttä <antti.maatta@qt.io>2016-08-12 12:21:33 +0300
committerSean Harmer <sean.harmer@kdab.com>2016-08-13 08:06:19 +0000
commit01234b9cc117078563dfcbfd3ae149a9a4a97311 (patch)
treee3e48f0895393b9f9b8c7ce3d2431c8ddf7485fe /src/render/graphicshelpers/graphicscontext.cpp
parentf0945707df16d1102b97eee15ff45efe48b46fca (diff)
Add renderTargetSize query function
Implement renderTargetSize function, which queries the size of the current render target. Change setViewport to use it. Change-Id: I3e3125c9451ef3b86f91d78ceaf881e927ba48f9 Reviewed-by: Janne Koskinen <janne.p.koskinen@theqtcompany.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/graphicshelpers/graphicscontext.cpp')
-rw-r--r--src/render/graphicshelpers/graphicscontext.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/render/graphicshelpers/graphicscontext.cpp b/src/render/graphicshelpers/graphicscontext.cpp
index 05ca0a128..079642dc5 100644
--- a/src/render/graphicshelpers/graphicscontext.cpp
+++ b/src/render/graphicshelpers/graphicscontext.cpp
@@ -286,9 +286,8 @@ void GraphicsContext::endDrawing(bool swapBuffers)
decayTextureScores();
}
-void GraphicsContext::setViewport(const QRectF &viewport, const QSize &surfaceSize)
+QSize GraphicsContext::renderTargetSize(const QSize &surfaceSize) const
{
- m_viewport = viewport;
QSize renderTargetSize;
if (m_activeFBO != m_defaultFBO) {
// For external FBOs we may not have a m_renderTargets entry.
@@ -317,7 +316,7 @@ void GraphicsContext::setViewport(const QRectF &viewport, const QSize &surfaceSi
// Assumes texture level 0 and GL_TEXTURE_2D target
renderTargetSize = m_glHelper->getTextureDimensions(attachment0Name, GL_TEXTURE_2D);
else
- return;
+ return renderTargetSize;
}
} else {
renderTargetSize = m_surface->size();
@@ -326,9 +325,16 @@ void GraphicsContext::setViewport(const QRectF &viewport, const QSize &surfaceSi
renderTargetSize *= dpr;
}
}
+ return renderTargetSize;
+}
+
+void GraphicsContext::setViewport(const QRectF &viewport, const QSize &surfaceSize)
+{
+ m_viewport = viewport;
+ QSize size = renderTargetSize(surfaceSize);
// Check that the returned size is before calling glViewport
- if (renderTargetSize.isEmpty())
+ if (size.isEmpty())
return;
// Qt3D 0------------------> 1 OpenGL 1^
@@ -339,10 +345,10 @@ void GraphicsContext::setViewport(const QRectF &viewport, const QSize &surfaceSi
// 1 0---------------------> 1
// The Viewport is defined between 0 and 1 which allows us to automatically
// scale to the size of the provided window surface
- m_gl->functions()->glViewport(m_viewport.x() * renderTargetSize.width(),
- (1.0 - m_viewport.y() - m_viewport.height()) * renderTargetSize.height(),
- m_viewport.width() * renderTargetSize.width(),
- m_viewport.height() * renderTargetSize.height());
+ m_gl->functions()->glViewport(m_viewport.x() * size.width(),
+ (1.0 - m_viewport.y() - m_viewport.height()) * size.height(),
+ m_viewport.width() * size.width(),
+ m_viewport.height() * size.height());
}
void GraphicsContext::releaseOpenGL()