From 8d8a29d4e68116dfbb48c00a28b188fd8a1d9a1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= Date: Mon, 7 Oct 2013 08:49:37 +0300 Subject: QML bars slice mess fixed Task-number: QTRD-2373 Change-Id: Ic256a432b7eb77880eb1b5ea47844b155fe51c2a Change-Id: Ic256a432b7eb77880eb1b5ea47844b155fe51c2a Reviewed-by: Miikka Heikkinen --- src/datavisualization/engine/abstract3drenderer.cpp | 5 +++++ src/datavisualization/engine/bars3drenderer.cpp | 12 +++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp index e1094813..ca2a9d38 100644 --- a/src/datavisualization/engine/abstract3drenderer.cpp +++ b/src/datavisualization/engine/abstract3drenderer.cpp @@ -108,6 +108,11 @@ void Abstract3DRenderer::render(const GLuint defaultFboHandle) glDisable(GL_BLEND); // For QtQuick2 blending is enabled by default, but we don't want it to be } + glViewport(m_cachedScene->viewport().x(), + m_cachedScene->viewport().y(), + m_cachedScene->viewport().width(), + m_cachedScene->viewport().height()); + QVector3D clearColor = Utils::vectorFromColor(m_cachedTheme.m_windowColor); glClearColor(clearColor.x(), clearColor.y(), clearColor.z(), 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp index 360b346c..129ae924 100644 --- a/src/datavisualization/engine/bars3drenderer.cpp +++ b/src/datavisualization/engine/bars3drenderer.cpp @@ -223,13 +223,12 @@ void Bars3DRenderer::updateScene(Q3DScene *scene) scene->setLightPositionRelativeToCamera(defaultLightPos); Abstract3DRenderer::updateScene(scene); + + updateSlicingActive(scene->isSlicingActive()); } void Bars3DRenderer::render(GLuint defaultFboHandle) { - bool slicingActivated = m_cachedScene->isSlicingActive(); - updateSlicingActive(slicingActivated); - // Handle GL state setup for FBO buffers and clearing of the render surface Abstract3DRenderer::render(defaultFboHandle); @@ -241,7 +240,7 @@ void Bars3DRenderer::render(GLuint defaultFboHandle) drawScene(defaultFboHandle); // If slicing has been activated by this render pass, we need another render - if (slicingActivated != m_cachedScene->isSlicingActive()) + if (m_cachedIsSlicingActivated != m_cachedScene->isSlicingActive()) emit needRender(); } @@ -1482,10 +1481,11 @@ void Bars3DRenderer::handleResize() m_cachedBoundingRect.height() - m_cachedBoundingRect.height() / 5, m_cachedBoundingRect.width() / 5, m_cachedBoundingRect.height() / 5); + m_sliceViewPort = QRect(0, 0, m_cachedBoundingRect.width(), m_cachedBoundingRect.height()); } else { m_mainViewPort = QRect(0, 0, m_cachedBoundingRect.width(), m_cachedBoundingRect.height()); + m_sliceViewPort = QRect(0, 0, 0, 0); } - m_sliceViewPort = QRect(0, 0, m_cachedBoundingRect.width(), m_cachedBoundingRect.height()); Abstract3DRenderer::handleResize(); } @@ -1724,6 +1724,7 @@ void Bars3DRenderer::updateSlicingActive(bool isSlicing) if (isSlicing) { m_mainViewPort = QRect(0, m_cachedBoundingRect.height() - m_cachedBoundingRect.height() / 5, m_cachedBoundingRect.width() / 5, m_cachedBoundingRect.height() / 5); + m_sliceViewPort = QRect(0, 0, m_cachedBoundingRect.width(), m_cachedBoundingRect.height()); if (m_depthTexture) { m_textureHelper->deleteTexture(&m_depthTexture); m_depthTexture = 0; @@ -1731,6 +1732,7 @@ void Bars3DRenderer::updateSlicingActive(bool isSlicing) } else { m_mainViewPort = QRect(0, 0, this->m_cachedBoundingRect.width(), this->m_cachedBoundingRect.height()); + m_sliceViewPort = QRect(0, 0, 0, 0); initSelectionBuffer(); // We need to re-init selection buffer in case there has been a resize #if !defined(QT_OPENGL_ES_2) updateDepthBuffer(); // Re-init depth buffer as well -- cgit v1.2.3