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/surface3drenderer_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/surface3drenderer_p.h')
-rw-r--r-- | src/datavisualization/engine/surface3drenderer_p.h | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/datavisualization/engine/surface3drenderer_p.h b/src/datavisualization/engine/surface3drenderer_p.h index 39e96f55..e1147e3c 100644 --- a/src/datavisualization/engine/surface3drenderer_p.h +++ b/src/datavisualization/engine/surface3drenderer_p.h @@ -95,9 +95,8 @@ private: QSizeF m_areaSize; bool m_hasHeightAdjustmentChanged; QPoint m_selectedPoint; - const QSurface3DSeries *m_selectedSeries; + QSurface3DSeries *m_selectedSeries; QPoint m_clickedPosition; - QHash<QSurface3DSeries *, SurfaceSeriesRenderCache *> m_renderCacheList; bool m_selectionTexturesDirty; GLuint m_noShadowTexture; @@ -106,17 +105,15 @@ public: ~Surface3DRenderer(); void updateData(); - void updateSeries(const QList<QAbstract3DSeries *> &seriesList, bool updateVisibility); + void updateSeries(const QList<QAbstract3DSeries *> &seriesList); + SeriesRenderCache *createNewCache(QAbstract3DSeries *series); + void cleanCache(SeriesRenderCache *cache); void updateSelectionMode(QAbstract3DGraph::SelectionFlags mode); - void modifiedSeriesList(const QVector<QSurface3DSeries *> &seriesList); void updateRows(const QVector<Surface3DController::ChangeRow> &rows); void updateItem(const QVector<Surface3DController::ChangeItem> &points); - void updateAxisRange(QAbstract3DAxis::AxisOrientation orientation, float min, float max); - void updateAxisFormatter(QAbstract3DAxis::AxisOrientation orientation, - QValue3DAxisFormatter *formatter); void updateScene(Q3DScene *scene); void updateSlicingActive(bool isSlicing); - void updateSelectedPoint(const QPoint &position, const QSurface3DSeries *series); + void updateSelectedPoint(const QPoint &position, QSurface3DSeries *series); inline QPoint clickedPosition() const { return m_clickedPosition; } void resetClickedStatus(); |