diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-02-17 08:19:35 +0200 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-02-17 08:24:00 +0200 |
commit | a0a443c3abfe2995122ed04ec479ac60072f49a0 (patch) | |
tree | ea7463b992f4f12140cf2bafd3e2b0c889ef27aa /src | |
parent | 2a05ac83e4423815456e2995b74f80070239ad78 (diff) |
Draw surface grid in slice when wireframe only
Task-number: QTRD-2876
Change-Id: Iaa09592250e7e827ef194abc27cee86596ca5d8d
Change-Id: Iaa09592250e7e827ef194abc27cee86596ca5d8d
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/datavisualization/engine/surface3drenderer.cpp | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp index c5ccbe47..5f3c0a2d 100644 --- a/src/datavisualization/engine/surface3drenderer.cpp +++ b/src/datavisualization/engine/surface3drenderer.cpp @@ -329,7 +329,7 @@ void Surface3DRenderer::updateRows(const QVector<Surface3DController::ChangeRow> updateBuffers = true; for (int j = 0; j < sampleSpace.width(); j++) { (*(dstArray.at(row - sampleSpace.y())))[j] = - srcArray->at(row)->at(j + sampleSpace.x()); + srcArray->at(row)->at(j + sampleSpace.x()); } if (cache->isFlatShadingEnabled()) { @@ -404,7 +404,7 @@ void Surface3DRenderer::updateSliceDataModel(const QPoint &point) } else { if (m_selectedSeries) { SurfaceSeriesRenderCache *cache = - m_renderCacheList.value(const_cast<QSurface3DSeries *>(m_selectedSeries)); + m_renderCacheList.value(const_cast<QSurface3DSeries *>(m_selectedSeries)); if (cache) updateSliceObject(cache, point); } @@ -653,34 +653,36 @@ void Surface3DRenderer::drawSlicedScene() bool drawGrid = false; foreach (SurfaceSeriesRenderCache *cache, m_renderCacheList) { - if (cache->sliceSurfaceObject()->indexCount() && cache->surfaceVisible() - && cache->isSeriesVisible()) { + if (cache->sliceSurfaceObject()->indexCount() && cache->isSeriesVisible() + && (cache->surfaceVisible() || cache->surfaceGridVisible())) { if (cache->surfaceGridVisible()) { glEnable(GL_POLYGON_OFFSET_FILL); glPolygonOffset(0.5f, 1.0f); drawGrid = true; } - ShaderHelper *surfaceShader = m_surfaceFlatShader; - surfaceShader->bind(); - - GLuint colorTexture = cache->baseUniformTexture();; - if (cache->colorStyle() != Q3DTheme::ColorStyleUniform) - colorTexture = cache->baseGradientTexture(); - - // Set shader bindings - surfaceShader->setUniformValue(surfaceShader->lightP(), lightPos); - surfaceShader->setUniformValue(surfaceShader->view(), viewMatrix); - surfaceShader->setUniformValue(surfaceShader->model(), modelMatrix); - surfaceShader->setUniformValue(surfaceShader->nModel(), - itModelMatrix.inverted().transposed()); - surfaceShader->setUniformValue(surfaceShader->MVP(), MVPMatrix); - surfaceShader->setUniformValue(surfaceShader->lightS(), 0.15f); - surfaceShader->setUniformValue(surfaceShader->ambientS(), - m_cachedTheme->ambientLightStrength() * 2.3f); - surfaceShader->setUniformValue(surfaceShader->lightColor(), lightColor); - - m_drawer->drawObject(surfaceShader, cache->sliceSurfaceObject(), colorTexture); + if (cache->surfaceVisible()) { + ShaderHelper *surfaceShader = m_surfaceFlatShader; + surfaceShader->bind(); + + GLuint colorTexture = cache->baseUniformTexture();; + if (cache->colorStyle() != Q3DTheme::ColorStyleUniform) + colorTexture = cache->baseGradientTexture(); + + // Set shader bindings + surfaceShader->setUniformValue(surfaceShader->lightP(), lightPos); + surfaceShader->setUniformValue(surfaceShader->view(), viewMatrix); + surfaceShader->setUniformValue(surfaceShader->model(), modelMatrix); + surfaceShader->setUniformValue(surfaceShader->nModel(), + itModelMatrix.inverted().transposed()); + surfaceShader->setUniformValue(surfaceShader->MVP(), MVPMatrix); + surfaceShader->setUniformValue(surfaceShader->lightS(), 0.15f); + surfaceShader->setUniformValue(surfaceShader->ambientS(), + m_cachedTheme->ambientLightStrength() * 2.3f); + surfaceShader->setUniformValue(surfaceShader->lightColor(), lightColor); + + m_drawer->drawObject(surfaceShader, cache->sliceSurfaceObject(), colorTexture); + } } } |