Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 2f6bcf8

Browse files
ptitjanogithub-actions[bot]
authored andcommittedApr 5, 2023
qgs3daxis: Fix label transparency issues by using a sort policy
This ensures to have the labels (Text2DEntity) rendered after the other objects and therefore avoid any transparency issue on the labels.
1 parent f499307 commit 2f6bcf8

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed
 

‎src/3d/qgs3daxis.cpp

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ typedef Qt3DCore::QBuffer Qt3DQBuffer;
3838
#include <Qt3DRender/QLayer>
3939
#include <Qt3DRender/QLayerFilter>
4040
#include <Qt3DRender/QPointLight>
41+
#include <Qt3DRender/QSortPolicy>
4142
#include <QWidget>
4243
#include <QScreen>
4344
#include <QShortcut>
@@ -307,7 +308,14 @@ Qt3DRender::QViewport *Qgs3DAxis::constructAxisViewport( Qt3DCore::QEntity *pare
307308
axisCameraSelector->setParent( axisLayerFilter );
308309
axisCameraSelector->setCamera( mAxisCamera );
309310

310-
Qt3DRender::QClearBuffers *clearBuffers = new Qt3DRender::QClearBuffers( axisCameraSelector );
311+
// This ensures to have the labels (Text2DEntity) rendered after the other objects and therefore
312+
// avoid any transparency issue on the labels.
313+
Qt3DRender::QSortPolicy *sortPolicy = new Qt3DRender::QSortPolicy( axisCameraSelector );
314+
QVector<Qt3DRender::QSortPolicy::SortType> sortTypes = QVector<Qt3DRender::QSortPolicy::SortType>();
315+
sortTypes << Qt3DRender::QSortPolicy::BackToFront;
316+
sortPolicy->setSortTypes( sortTypes );
317+
318+
Qt3DRender::QClearBuffers *clearBuffers = new Qt3DRender::QClearBuffers( sortPolicy );
311319
clearBuffers->setBuffers( Qt3DRender::QClearBuffers::DepthBuffer );
312320

313321
// cppcheck-suppress memleak
@@ -348,7 +356,14 @@ Qt3DRender::QViewport *Qgs3DAxis::constructLabelViewport( Qt3DCore::QEntity *par
348356
twoDCameraSelector->setParent( twoDLayerFilter );
349357
twoDCameraSelector->setCamera( mTwoDLabelCamera );
350358

351-
Qt3DRender::QClearBuffers *clearBuffers = new Qt3DRender::QClearBuffers( twoDCameraSelector );
359+
// this ensures to have the labels (Text2DEntity) rendered after the other objects and therefore
360+
// avoid any transparency issue on the labels.
361+
Qt3DRender::QSortPolicy *sortPolicy = new Qt3DRender::QSortPolicy( twoDCameraSelector );
362+
QVector<Qt3DRender::QSortPolicy::SortType> sortTypes = QVector<Qt3DRender::QSortPolicy::SortType>();
363+
sortTypes << Qt3DRender::QSortPolicy::BackToFront;
364+
sortPolicy->setSortTypes( sortTypes );
365+
366+
Qt3DRender::QClearBuffers *clearBuffers = new Qt3DRender::QClearBuffers( sortPolicy );
352367
clearBuffers->setBuffers( Qt3DRender::QClearBuffers::DepthBuffer );
353368

354369
// cppcheck-suppress memleak

0 commit comments

Comments
 (0)
Please sign in to comment.