From 6de5b7a0bb9fe79ccd56cc5088464143794d7135 Mon Sep 17 00:00:00 2001 From: Mika Salmela Date: Thu, 19 Dec 2013 11:12:38 +0200 Subject: Clear the depth texture when surface not visible Also grid and surface visibility should not affect on updates. Task-number: QTRD-2742 Change-Id: I9605897599d571b1ee39dab7f6c93d5c80110f0c Reviewed-by: Miikka Heikkinen --- src/datavisualization/engine/surface3drenderer.cpp | 23 ++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp index 7049632d..d9351cc9 100644 --- a/src/datavisualization/engine/surface3drenderer.cpp +++ b/src/datavisualization/engine/surface3drenderer.cpp @@ -264,6 +264,9 @@ void Surface3DRenderer::updateData() delete m_surfaceObj; m_surfaceObj = 0; + + m_textureHelper->fillDepthTexture(m_depthTexture, m_primarySubViewport.size(), + m_shadowQualityMultiplier, 1.0f); } for (int i = 0; i < m_sliceDataArray.size(); i++) @@ -285,6 +288,10 @@ void Surface3DRenderer::updateSeries(const QList &seriesLis QSurface3DSeries::DrawFlags drawMode = series->drawMode(); m_cachedSurfaceVisible = drawMode.testFlag(QSurface3DSeries::DrawSurface); + if (!m_cachedSurfaceVisible) { + m_textureHelper->fillDepthTexture(m_depthTexture, m_primarySubViewport.size(), + m_shadowQualityMultiplier, 1.0f); + } m_cachedSurfaceGridOn = drawMode.testFlag(QSurface3DSeries::DrawWireframe); QVector3D seriesColor = Utils::vectorFromColor(series->baseColor()); @@ -304,11 +311,9 @@ void Surface3DRenderer::updateRows(const QVector &rows) const QSurfaceDataArray *array = 0; if (m_visibleSeriesList.size()) { QSurface3DSeries *firstSeries = static_cast(m_visibleSeriesList.at(0).series()); - if (m_cachedSurfaceGridOn || m_cachedSurfaceVisible) { - QSurfaceDataProxy *dataProxy = firstSeries->dataProxy(); - if (dataProxy) - array = dataProxy->array(); - } + QSurfaceDataProxy *dataProxy = firstSeries->dataProxy(); + if (dataProxy) + array = dataProxy->array(); } if (array && array->size() >= 2 && array->at(0)->size() >= 2 && @@ -346,11 +351,9 @@ void Surface3DRenderer::updateItem(const QVector &points) const QSurfaceDataArray *array = 0; if (m_visibleSeriesList.size()) { QSurface3DSeries *firstSeries = static_cast(m_visibleSeriesList.at(0).series()); - if (m_cachedSurfaceGridOn || m_cachedSurfaceVisible) { - QSurfaceDataProxy *dataProxy = firstSeries->dataProxy(); - if (dataProxy) - array = dataProxy->array(); - } + QSurfaceDataProxy *dataProxy = firstSeries->dataProxy(); + if (dataProxy) + array = dataProxy->array(); } if (array && array->size() >= 2 && array->at(0)->size() >= 2 && -- cgit v1.2.3