diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-09-19 11:05:27 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-09-19 11:12:11 +0300 |
commit | 105e85170d35f7086dc96d1853298fcf8d680e06 (patch) | |
tree | 295d8fd37832014ce1e65ab12d57f6aae757740b /src/datavisualization/engine/abstract3drenderer.cpp | |
parent | 98e0c04fe78da9735c2943524bd36648b2654f98 (diff) |
Change custom labels to use label shader
This fixes the problem with specular highlight making camera-facing
labels unreadable.
Task-number: QTRD-3276
Change-Id: If16424b07a1f3362428980353c5fb5213c33d06b
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/engine/abstract3drenderer.cpp')
-rw-r--r-- | src/datavisualization/engine/abstract3drenderer.cpp | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp index a0e0bc45..d0f3c04b 100644 --- a/src/datavisualization/engine/abstract3drenderer.cpp +++ b/src/datavisualization/engine/abstract3drenderer.cpp @@ -63,6 +63,7 @@ Abstract3DRenderer::Abstract3DRenderer(Abstract3DController *controller) m_volumeTextureLowDefShader(0), m_volumeTextureSliceShader(0), m_volumeSliceFrameShader(0), + m_labelShader(0), m_useOrthoProjection(false), m_xFlipped(false), m_yFlipped(false), @@ -108,6 +109,7 @@ Abstract3DRenderer::~Abstract3DRenderer() delete m_volumeTextureLowDefShader; delete m_volumeSliceFrameShader; delete m_volumeTextureSliceShader; + delete m_labelShader; foreach (SeriesRenderCache *cache, m_renderCacheList) { cache->cleanup(m_textureHelper); @@ -152,6 +154,9 @@ void Abstract3DRenderer::initializeOpenGL() axisCacheForOrientation(QAbstract3DAxis::AxisOrientationX).setDrawer(m_drawer); axisCacheForOrientation(QAbstract3DAxis::AxisOrientationY).setDrawer(m_drawer); axisCacheForOrientation(QAbstract3DAxis::AxisOrientationZ).setDrawer(m_drawer); + + initLabelShaders(QStringLiteral(":/shaders/vertexLabel"), + QStringLiteral(":/shaders/fragmentLabel")); } void Abstract3DRenderer::render(const GLuint defaultFboHandle) @@ -232,6 +237,13 @@ void Abstract3DRenderer::initVolumeTextureShaders(const QString &vertexShader, m_volumeSliceFrameShader->initialize(); } +void Abstract3DRenderer::initLabelShaders(const QString &vertexShader, const QString &fragmentShader) +{ + delete m_labelShader; + m_labelShader = new ShaderHelper(this, vertexShader, fragmentShader); + m_labelShader->initialize(); +} + void Abstract3DRenderer::updateTheme(Q3DTheme *theme) { // Synchronize the controller theme with renderer @@ -1366,8 +1378,8 @@ void Abstract3DRenderer::drawCustomItems(RenderingState state, if (RenderingNormal == state) { // Normal render -#if !defined(QT_OPENGL_ES_2) ShaderHelper *prevShader = shader; +#if !defined(QT_OPENGL_ES_2) if (item->isVolume()) { if (item->drawSlices() && (item->sliceIndexX() >= 0 @@ -1379,12 +1391,14 @@ void Abstract3DRenderer::drawCustomItems(RenderingState state, } else { shader = m_volumeTextureLowDefShader; } - } else { + } else +#endif + if (item->isLabel()) + shader = m_labelShader; + else shader = regularShader; - } if (shader != prevShader) shader->bind(); -#endif shader->setUniformValue(shader->model(), modelMatrix); shader->setUniformValue(shader->MVP(), MVPMatrix); shader->setUniformValue(shader->nModel(), itModelMatrix.inverted().transposed()); |