diff options
-rw-r--r-- | src/datavisualization/engine/abstract3drenderer.cpp | 6 | ||||
-rw-r--r-- | src/datavisualization/engine/abstract3drenderer_p.h | 1 | ||||
-rw-r--r-- | src/datavisualization/engine/qabstract3dgraph.cpp | 3 |
3 files changed, 9 insertions, 1 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 |