diff options
author | Mika Salmela <mika.salmela@digia.com> | 2013-10-22 15:43:38 +0300 |
---|---|---|
committer | Mika Salmela <mika.salmela@digia.com> | 2013-10-23 09:27:38 +0300 |
commit | 67d06ccc70eb2dc591f31465e6f77e5d069029b8 (patch) | |
tree | f542d23ca839aa23a6edcdcf268c4b77a12377c9 /src/datavisualization | |
parent | d6556d784ed7ebd38701c96fcfa65b8ba728e7d7 (diff) |
Polygon offset to surface grid
- Verified on Android & Angle
Change-Id: I5049b54d4133f26c48462eebdb64384b8b026845
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization')
-rw-r--r-- | src/datavisualization/engine/surface3drenderer.cpp | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp index bb9d17d9..10ebd987 100644 --- a/src/datavisualization/engine/surface3drenderer.cpp +++ b/src/datavisualization/engine/surface3drenderer.cpp @@ -54,11 +54,8 @@ const GLfloat labelMargin = 0.05f; const GLfloat backgroundBottom = 1.0f; const GLfloat gridLineWidth = 0.005f; const GLfloat sliceZScale = 0.1f; -const GLfloat surfaceGridYOffsetValue = 0.001f; const GLfloat sliceUnits = 2.5f; const int subViewDivider = 5; -// The second offset to opposite direction is double because same matrix is translated twice -const GLfloat surfaceGridYOffset[2] = {-surfaceGridYOffsetValue, 2.0f * surfaceGridYOffsetValue}; Surface3DRenderer::Surface3DRenderer(Surface3DController *controller) : Abstract3DRenderer(controller), @@ -505,6 +502,11 @@ void Surface3DRenderer::drawSlicedScene() ShaderHelper *surfaceShader = m_shader; surfaceShader->bind(); + if (m_cachedSurfaceGridOn) { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(0.5f, 1.0f); + } + QMatrix4x4 modelMatrix; QMatrix4x4 MVPMatrix; QMatrix4x4 itModelMatrix; @@ -541,17 +543,13 @@ void Surface3DRenderer::drawSlicedScene() // Draw surface grid if (m_cachedSurfaceGridOn) { m_surfaceGridShader->bind(); - m_surfaceGridShader->setUniformValue(m_surfaceGridShader->color(), Utils::vectorFromColor(m_cachedTheme.m_gridLine)); - // Draw the grid twice, with slight offset on Y axis to each direction - for (int i = 0; i < 2; i++) { - MVPMatrix.translate(0.0f, surfaceGridYOffset[i], 0.0f); - - m_surfaceGridShader->setUniformValue(m_surfaceGridShader->MVP(), MVPMatrix); - m_drawer->drawSurfaceGrid(m_surfaceGridShader, m_sliceSurfaceObj); - } + m_surfaceGridShader->setUniformValue(m_surfaceGridShader->MVP(), MVPMatrix); + m_drawer->drawSurfaceGrid(m_surfaceGridShader, m_sliceSurfaceObj); m_surfaceGridShader->release(); + + glDisable(GL_POLYGON_OFFSET_FILL); } } @@ -938,6 +936,10 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle) // For surface we can see climpses from underneath glDisable(GL_CULL_FACE); + if (m_cachedSurfaceGridOn) { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(0.5f, 1.0f); + } QMatrix4x4 modelMatrix; QMatrix4x4 MVPMatrix; @@ -990,17 +992,13 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle) // Draw surface grid if (m_cachedSurfaceGridOn) { m_surfaceGridShader->bind(); - m_surfaceGridShader->setUniformValue(m_surfaceGridShader->color(), Utils::vectorFromColor(m_cachedTheme.m_gridLine)); - // Draw the grid twice, with slight offset on Y axis to each direction - for (int i = 0; i < 2; i++) { - MVPMatrix.translate(0.0f, surfaceGridYOffset[i], 0.0f); - - m_surfaceGridShader->setUniformValue(m_surfaceGridShader->MVP(), MVPMatrix); - m_drawer->drawSurfaceGrid(m_surfaceGridShader, m_surfaceObj); - } + m_surfaceGridShader->setUniformValue(m_surfaceGridShader->MVP(), MVPMatrix); + m_drawer->drawSurfaceGrid(m_surfaceGridShader, m_surfaceObj); m_surfaceGridShader->release(); + + glDisable(GL_POLYGON_OFFSET_FILL); } } |