summaryrefslogtreecommitdiffstats
path: root/src/datavisualization
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@digia.com>2013-10-22 15:43:38 +0300
committerMika Salmela <mika.salmela@digia.com>2013-10-23 09:27:38 +0300
commit67d06ccc70eb2dc591f31465e6f77e5d069029b8 (patch)
treef542d23ca839aa23a6edcdcf268c4b77a12377c9 /src/datavisualization
parentd6556d784ed7ebd38701c96fcfa65b8ba728e7d7 (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.cpp36
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);
}
}