diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-04-07 14:26:32 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-04-10 08:20:49 +0300 |
commit | 28e42188efb1544cf6b1433c244d590165ee6ebd (patch) | |
tree | 3cc0e1c717a1b21f21616dc87a08db6a9b36bada /src/datavisualization/engine/scatter3drenderer_p.h | |
parent | 1b5d9a30adc0c9ca4f7929c375db008830586516 (diff) |
Optimize multiple series rendering.
Cache all series instead of just the visible ones on all graphs
instead of just surface.
Changes to one series now trigger data update to only the affected
series, which should significantly improve performance in these
cases.
Task-number: QTRD-2600
Task-number: QTRD-2957
Change-Id: I6db7c689108fce8d25aace6682a193936d6f0eaf
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/engine/scatter3drenderer_p.h')
-rw-r--r-- | src/datavisualization/engine/scatter3drenderer_p.h | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/datavisualization/engine/scatter3drenderer_p.h b/src/datavisualization/engine/scatter3drenderer_p.h index 8b4d0759..ab45381e 100644 --- a/src/datavisualization/engine/scatter3drenderer_p.h +++ b/src/datavisualization/engine/scatter3drenderer_p.h @@ -46,6 +46,7 @@ class ObjectHelper; class LabelItem; class Q3DScene; class QAbstractAxisPrivate; +class ScatterSeriesRenderCache; class QT_DATAVISUALIZATION_EXPORT Scatter3DRenderer : public Abstract3DRenderer { @@ -83,26 +84,27 @@ private: GLfloat m_heightNormalizer; GLfloat m_scaleFactor; int m_selectedItemIndex; - int m_selectedItemTotalIndex; - int m_selectedItemSeriesIndex; - const QScatter3DSeries *m_selectedSeries; + ScatterSeriesRenderCache *m_selectedSeriesCache; QSizeF m_areaSize; GLfloat m_dotSizeScale; QVector3D m_translationOffset; bool m_hasHeightAdjustmentChanged; ScatterRenderItem m_dummyRenderItem; - QVector<ScatterRenderItemArray> m_renderingArrays; GLfloat m_backgroundMargin; GLfloat m_maxItemSize; - QVector<float> m_cachedItemSize; int m_clickedIndex; + bool m_havePointSeries; + bool m_haveMeshSeries; + bool m_haveUniformColorMeshSeries; + bool m_haveGradientMeshSeries; public: explicit Scatter3DRenderer(Scatter3DController *controller); ~Scatter3DRenderer(); - void updateSeries(const QList<QAbstract3DSeries *> &seriesList, bool updateVisibility); void updateData(); + void updateSeries(const QList<QAbstract3DSeries *> &seriesList); + SeriesRenderCache *createNewCache(QAbstract3DSeries *series); void updateScene(Q3DScene *scene); inline int clickedIndex() const { return m_clickedIndex; } @@ -145,7 +147,7 @@ private: friend class ScatterRenderItem; public slots: - void updateSelectedItem(int index, const QScatter3DSeries *series); + void updateSelectedItem(int index, QScatter3DSeries *series); private: QVector4D indexToSelectionColor(GLint index); |