diff options
author | Antti Määttä <antti.maatta@qt.io> | 2016-08-12 12:21:33 +0300 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-08-13 08:06:19 +0000 |
commit | 01234b9cc117078563dfcbfd3ae149a9a4a97311 (patch) | |
tree | e3e48f0895393b9f9b8c7ce3d2431c8ddf7485fe /src/render/graphicshelpers/graphicscontext.cpp | |
parent | f0945707df16d1102b97eee15ff45efe48b46fca (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.cpp | 22 |
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() |