diff options
author | Mika Salmela <mika.salmela@digia.com> | 2014-09-03 15:00:07 +0300 |
---|---|---|
committer | Mika Salmela <mika.salmela@digia.com> | 2014-09-04 11:20:14 +0300 |
commit | 18413de96ea907ea5c7defdcb40248fdfbaa4de7 (patch) | |
tree | 09910eefb5658556e1ddc97c1b8551b8e3248ef7 /src/datavisualization/engine/scatter3drenderer.cpp | |
parent | 28777a99f79bc9db1a28e1b93080b005be03353b (diff) |
ES2 gradient support for static optimization
Change-Id: I3d5d5d006a26225a3a7ab5795fceb97630db0011
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization/engine/scatter3drenderer.cpp')
-rw-r--r-- | src/datavisualization/engine/scatter3drenderer.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/datavisualization/engine/scatter3drenderer.cpp b/src/datavisualization/engine/scatter3drenderer.cpp index 8c4644c6..ba1019ad 100644 --- a/src/datavisualization/engine/scatter3drenderer.cpp +++ b/src/datavisualization/engine/scatter3drenderer.cpp @@ -50,6 +50,7 @@ Scatter3DRenderer::Scatter3DRenderer(Scatter3DController *controller) m_selectionShader(0), m_backgroundShader(0), m_labelShader(0), + m_staticGradientPointShader(0), m_bgrTexture(0), m_selectionTexture(0), m_depthFrameBuffer(0), @@ -93,6 +94,7 @@ Scatter3DRenderer::~Scatter3DRenderer() delete m_selectionShader; delete m_backgroundShader; delete m_labelShader; + delete m_staticGradientPointShader; } void Scatter3DRenderer::initializeOpenGL() @@ -348,6 +350,13 @@ void Scatter3DRenderer::updateOptimizationHint(QAbstract3DGraph::OptimizationHin Abstract3DRenderer::updateOptimizationHint(hint); Abstract3DRenderer::reInitShaders(); + +#if defined(QT_OPENGL_ES_2) + if (hint.testFlag(QAbstract3DGraph::OptimizationStatic) && !m_staticGradientPointShader) { + initStaticPointShaders(QStringLiteral(":/shaders/vertexPointES2_UV"), + QStringLiteral(":/shaders/fragmentLabel")); + } +#endif } void Scatter3DRenderer::resetClickedStatus() @@ -859,7 +868,11 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle) } if (!optimizationDefault && rangeGradientPoints) { +#if !defined(QT_OPENGL_ES_2) dotShader = m_labelShader; +#else + dotShader = m_staticGradientPointShader; +#endif dotShader->bind(); gradientTexture = cache->baseGradientTexture(); } @@ -2208,6 +2221,16 @@ void Scatter3DRenderer::initLabelShaders(const QString &vertexShader, const QStr m_labelShader->initialize(); } +void Scatter3DRenderer::initStaticPointShaders(const QString &vertexShader, + const QString &fragmentShader) +{ + if (m_staticGradientPointShader) + delete m_staticGradientPointShader; + m_staticGradientPointShader = new ShaderHelper(this, vertexShader, fragmentShader); + m_staticGradientPointShader->initialize(); +} + + void Scatter3DRenderer::selectionColorToSeriesAndIndex(const QVector4D &color, int &index, QAbstract3DSeries *&series) |