diff options
author | Mika Salmela <mika.salmela@digia.com> | 2014-02-06 12:56:54 +0200 |
---|---|---|
committer | Mika Salmela <mika.salmela@digia.com> | 2014-02-06 13:00:59 +0200 |
commit | e91237b54c2f58eaa8a2ce36bf016e2d8e8588f2 (patch) | |
tree | ec99b80a217b2e316a280c299fe5bc84edd7eb1b /src/datavisualization/engine/surface3drenderer_p.h | |
parent | 427e7f5f5c62f728e159462dd28ae1ef76761d75 (diff) |
Multiseries support for surface
Task-number: QTRD-2767
Change-Id: Ifa7ca07f2afdb27974ad20819f0a4646293764b0
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization/engine/surface3drenderer_p.h')
-rw-r--r-- | src/datavisualization/engine/surface3drenderer_p.h | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/datavisualization/engine/surface3drenderer_p.h b/src/datavisualization/engine/surface3drenderer_p.h index 06973f43..5f4e70ec 100644 --- a/src/datavisualization/engine/surface3drenderer_p.h +++ b/src/datavisualization/engine/surface3drenderer_p.h @@ -34,6 +34,7 @@ #include "abstract3drenderer_p.h" #include "scatterrenderitem_p.h" #include "qsurfacedataproxy.h" +#include "surfaceseriesrendercache_p.h" QT_BEGIN_NAMESPACE_DATAVISUALIZATION @@ -60,7 +61,8 @@ private: // Internal attributes purely related to how the scene is drawn with GL. ShaderHelper *m_depthShader; ShaderHelper *m_backgroundShader; - ShaderHelper *m_surfaceShader; + ShaderHelper *m_surfaceFlatShader; + ShaderHelper *m_surfaceSmoothShader; ShaderHelper *m_surfaceGridShader; ShaderHelper *m_selectionShader; ShaderHelper *m_labelShader; @@ -84,19 +86,15 @@ private: ObjectHelper *m_gridLineObj; ObjectHelper *m_labelObj; SurfaceObject *m_surfaceObj; - SurfaceObject *m_sliceSurfaceObj; GLuint m_depthTexture; GLuint m_depthModelTexture; GLuint m_depthFrameBuffer; GLuint m_selectionFrameBuffer; GLuint m_selectionDepthBuffer; - GLuint m_selectionTexture; GLuint m_selectionResultTexture; GLfloat m_shadowQualityToShader; bool m_cachedFlatShading; bool m_flatSupported; - bool m_cachedSurfaceVisible; - bool m_cachedSurfaceGridOn; SelectionPointer *m_selectionPointer; bool m_selectionActive; bool m_xFlipped; @@ -104,7 +102,6 @@ private: bool m_yFlipped; AbstractRenderItem m_dummyRenderItem; QSurfaceDataArray m_dataArray; - QSurfaceDataArray m_sliceDataArray; QRect m_sampleSpace; GLint m_shadowQualityMultiplier; QSizeF m_areaSize; @@ -112,9 +109,10 @@ private: bool m_hasHeightAdjustmentChanged; QPoint m_selectedPoint; const QSurface3DSeries *m_selectedSeries; - GLuint m_uniformGradientTexture; QVector3D m_uniformGradientTextureColor; QPoint m_clickedPosition; + QHash<QSurface3DSeries *, SurfaceSeriesRenderCache *> m_renderCacheList; + bool m_selectionTexturesDirty; public: explicit Surface3DRenderer(Surface3DController *controller); @@ -122,11 +120,11 @@ public: void updateData(); void updateSeries(const QList<QAbstract3DSeries *> &seriesList, bool updateVisibility); + void updateSelectionMode(QAbstract3DGraph::SelectionFlags mode); + void modifiedSeriesList(const QVector<QSurface3DSeries *> &seriesList); void updateRows(const QVector<int> &rows); void updateItem(const QVector<QPoint> &points); void updateScene(Q3DScene *scene); - bool updateFlatStatus(bool enable); - void updateSurfaceGridStatus(bool enable); void updateSlicingActive(bool isSlicing); void updateSelectedPoint(const QPoint &position, const QSurface3DSeries *series); inline QPoint clickedPosition() const { return m_clickedPosition; } @@ -142,6 +140,8 @@ signals: void flatShadingSupportedChanged(bool supported); private: + void checkFlatSupport(SurfaceSeriesRenderCache *cache); + void updateObjects(SurfaceSeriesRenderCache *cache, bool dimensionChanged); void updateSliceDataModel(const QPoint &point); void updateShadowQuality(QAbstract3DGraph::ShadowQuality quality); void updateTextures(); @@ -150,8 +150,6 @@ private: void loadBackgroundMesh(); void loadGridLineMesh(); void loadLabelMesh(); - void loadSurfaceObj(); - void loadSliceSurfaceObj(); void drawScene(GLuint defaultFboHandle); void calculateSceneScalingFactors(); void initBackgroundShaders(const QString &vertexShader, const QString &fragmentShader); @@ -160,7 +158,8 @@ private: void initSurfaceShaders(); void initSelectionBuffer(); void initDepthShader(); - void updateSelectionTexture(); + void updateSelectionTextures(); + void createSelectionTexture(SurfaceSeriesRenderCache *cache, uint &lastSelectionId); void idToRGBA(uint id, uchar *r, uchar *g, uchar *b, uchar *a); void fillIdCorner(uchar *p, uchar r, uchar g, uchar b, uchar a, int stride); void surfacePointSelected(const QPoint &point); @@ -170,7 +169,6 @@ private: void updateDepthBuffer(); #endif void emitSelectedPointChanged(QPoint position); - void generateUniformGradient(const QVector3D newColor); Q_DISABLE_COPY(Surface3DRenderer) }; |