diff options
Diffstat (limited to 'src/datavisualization/engine')
5 files changed, 10 insertions, 3 deletions
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp index dd3212ac..417be0e8 100644 --- a/src/datavisualization/engine/abstract3drenderer.cpp +++ b/src/datavisualization/engine/abstract3drenderer.cpp @@ -755,6 +755,9 @@ void Abstract3DRenderer::updateCustomData(const QList<QCustom3DItem *> &customIt delete renderItem; } } + + m_customItemDrawOrder.clear(); + m_customItemDrawOrder = QList<QCustom3DItem *>(customItems); } void Abstract3DRenderer::updateCustomItems() @@ -1436,7 +1439,8 @@ void Abstract3DRenderer::drawCustomItems(RenderingState state, bool volumeDetected = false; int loopCount = 0; while (loopCount < 2) { - foreach (CustomRenderItem *item, m_customRenderCache) { + for (QCustom3DItem *customItem : qAsConst(m_customItemDrawOrder)) { + CustomRenderItem *item = m_customRenderCache.value(customItem); // Check that the render item is visible, and skip drawing if not // Also check if reflected item is on the "wrong" side, and skip drawing if it is if (!item->isVisible() || ((m_reflectionEnabled && reflection < 0.0f) diff --git a/src/datavisualization/engine/abstract3drenderer_p.h b/src/datavisualization/engine/abstract3drenderer_p.h index bf64bc6d..c312b771 100644 --- a/src/datavisualization/engine/abstract3drenderer_p.h +++ b/src/datavisualization/engine/abstract3drenderer_p.h @@ -267,6 +267,7 @@ protected: QPoint m_inputPosition; QHash<QAbstract3DSeries *, SeriesRenderCache *> m_renderCacheList; CustomRenderItemArray m_customRenderCache; + QList<QCustom3DItem *> m_customItemDrawOrder; QRect m_primarySubViewport; QRect m_secondarySubViewport; float m_devicePixelRatio; diff --git a/src/datavisualization/engine/qabstract3dgraph.cpp b/src/datavisualization/engine/qabstract3dgraph.cpp index cb09082e..284ab408 100644 --- a/src/datavisualization/engine/qabstract3dgraph.cpp +++ b/src/datavisualization/engine/qabstract3dgraph.cpp @@ -442,6 +442,9 @@ void QAbstract3DGraph::clearSelection() * if trying to add a null item, and the index of the item if trying to add an * already added item. * + * Items are rendered in the order they have been inserted. The rendering order needs to + * be taken into account when having solid and transparent items. + * * \sa removeCustomItems(), removeCustomItem(), removeCustomItemAt(), customItems() * * \since QtDataVisualization 1.1 diff --git a/src/datavisualization/engine/shaders/surfaceTexturedFlat.frag b/src/datavisualization/engine/shaders/surfaceTexturedFlat.frag index 7c654e0c..6b1ea91a 100644 --- a/src/datavisualization/engine/shaders/surfaceTexturedFlat.frag +++ b/src/datavisualization/engine/shaders/surfaceTexturedFlat.frag @@ -2,7 +2,6 @@ #extension GL_EXT_gpu_shader4 : require -varying highp vec3 coords_mdl; varying highp vec3 position_wrld; flat varying highp vec3 normal_cmr; varying highp vec3 eyeDirection_cmr; diff --git a/src/datavisualization/engine/shaders/surfaceTexturedShadowFlat.frag b/src/datavisualization/engine/shaders/surfaceTexturedShadowFlat.frag index 496f4777..4a4284e1 100644 --- a/src/datavisualization/engine/shaders/surfaceTexturedShadowFlat.frag +++ b/src/datavisualization/engine/shaders/surfaceTexturedShadowFlat.frag @@ -2,7 +2,7 @@ #extension GL_EXT_gpu_shader4 : require -varying highp vec3 coords_mdl; +varying highp vec2 coords_mdl; varying highp vec3 position_wrld; flat varying highp vec3 normal_cmr; varying highp vec3 eyeDirection_cmr; |