summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/scatter3drenderer_p.h
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-04-07 14:26:32 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2014-04-10 08:20:49 +0300
commit28e42188efb1544cf6b1433c244d590165ee6ebd (patch)
tree3cc0e1c717a1b21f21616dc87a08db6a9b36bada /src/datavisualization/engine/scatter3drenderer_p.h
parent1b5d9a30adc0c9ca4f7929c375db008830586516 (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.h16
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);