18#include <Qt3DRender/QBlendEquation>
19#include <Qt3DRender/QBlendEquationArguments>
20#include <Qt3DRender/QCamera>
21#include <Qt3DRender/QCameraSelector>
22#include <Qt3DRender/QDepthTest>
23#include <Qt3DRender/QLayer>
24#include <Qt3DRender/QLayerFilter>
25#include <Qt3DRender/QRenderStateSet>
26#include <Qt3DRender/QRenderTargetSelector>
27#include <Qt3DRender/qsubtreeenabler.h>
31 , mMainCamera( mainCamera )
33 mLayer =
new Qt3DRender::QLayer;
34 mLayer->setRecursive(
true );
35 mLayer->setObjectName(
mViewName +
"::Layer" );
38 constructRenderPass( fwdRenderTarget );
40 mRootEntity =
new Qt3DCore::QEntity( rootSceneEntity );
41 mRootEntity->setObjectName(
"mRubberBandsRootEntity" );
42 mRootEntity->addComponent( mLayer );
45void QgsRubberBandRenderView::constructRenderPass( Qt3DRender::QRenderTarget *fwdRenderTarget )
47 Qt3DRender::QCameraSelector *cameraSelector =
new Qt3DRender::QCameraSelector(
mRendererEnabler );
48 cameraSelector->setObjectName(
mViewName +
"::CameraSelector" );
49 cameraSelector->setCamera( mMainCamera );
51 Qt3DRender::QLayerFilter *layerFilter =
new Qt3DRender::QLayerFilter( cameraSelector );
52 layerFilter->addLayer( mLayer );
54 Qt3DRender::QRenderStateSet *stateSet =
new Qt3DRender::QRenderStateSet( layerFilter );
56 Qt3DRender::QDepthTest *depthTest =
new Qt3DRender::QDepthTest;
57 depthTest->setDepthFunction( Qt3DRender::QDepthTest::Always );
58 stateSet->addRenderState( depthTest );
60 Qt3DRender::QBlendEquationArguments *blendState =
new Qt3DRender::QBlendEquationArguments;
61 blendState->setSourceRgb( Qt3DRender::QBlendEquationArguments::SourceAlpha );
62 blendState->setDestinationRgb( Qt3DRender::QBlendEquationArguments::OneMinusSourceAlpha );
63 stateSet->addRenderState( blendState );
65 Qt3DRender::QBlendEquation *blendEquation =
new Qt3DRender::QBlendEquation;
66 blendEquation->setBlendFunction( Qt3DRender::QBlendEquation::Add );
67 stateSet->addRenderState( blendEquation );
72 mRenderTargetSelector =
new Qt3DRender::QRenderTargetSelector( stateSet );
74 mRenderTargetSelector->setTarget( fwdRenderTarget );
84 return mRenderTargetSelector;
Qt3DRender::QSubtreeEnabler * mRendererEnabler
QgsAbstractRenderView(const QString &viewName)
Constructor for QgsAbstractRenderView with the specified parent object.
Qt3DRender::QRenderTargetSelector * renderTargetSelector() const
Returns rubberband tard selector.
QgsRubberBandRenderView(const QString &viewName, Qt3DRender::QCamera *mainCamera, Qt3DCore::QEntity *rootSceneEntity, Qt3DRender::QRenderTarget *fwdRenderTarget)
Default constructor.
Qt3DCore::QEntity * rubberBandEntity() const
Returns entity for all rubber bands (to show them always on top).