23#include <Qt3DRender/QEffect>
24#include <Qt3DRender/QGraphicsApiFilter>
25#include <Qt3DRender/QParameter>
26#include <Qt3DRender/QTechnique>
28#include "moc_qgshighlightmaterial.cpp"
30using namespace Qt::StringLiterals;
40QgsHighlightMaterial::~QgsHighlightMaterial() =
default;
44 Qt3DRender::QEffect *effect =
new Qt3DRender::QEffect;
45 Qt3DRender::QTechnique *technique =
new Qt3DRender::QTechnique;
46 technique->graphicsApiFilter()->setApi( Qt3DRender::QGraphicsApiFilter::OpenGL );
47 technique->graphicsApiFilter()->setProfile( Qt3DRender::QGraphicsApiFilter::CoreProfile );
48 technique->graphicsApiFilter()->setMajorVersion( 3 );
49 technique->graphicsApiFilter()->setMinorVersion( 3 );
51 Qt3DRender::QRenderPass *pass =
new Qt3DRender::QRenderPass;
53 Qt3DRender::QShaderProgram *shaderProgram =
new Qt3DRender::QShaderProgram;
54 switch ( renderingTechnique )
61 shaderProgram->setVertexShaderCode( Qt3DRender::QShaderProgram::loadSource( QUrl( u
"qrc:/shaders/default.vert"_s ) ) );
66 shaderProgram->setVertexShaderCode( Qt3DRender::QShaderProgram::loadSource( QUrl( u
"qrc:/shaders/instanced.vert"_s ) ) );
78 shaderProgram->setFragmentShaderCode( Qt3DRender::QShaderProgram::loadSource( QUrl( u
"qrc:/shaders/singlecolor.frag"_s ) ) );
79 pass->setShaderProgram( shaderProgram );
84 color.setAlphaF( alpha );
85 Qt3DRender::QParameter *colorParam =
new Qt3DRender::QParameter( u
"color"_s, color );
86 pass->addParameter( colorParam );
88 technique->addRenderPass( pass );
89 effect->addTechnique( technique );
static const QColor DEFAULT_HIGHLIGHT_COLOR
Default highlight color.
Base class for all materials used within QGIS 3D views.
Stores settings for use within QGIS.
QVariant value(const QString &key, const QVariant &defaultValue=QVariant(), Section section=NoSection) const
Returns the value for setting key.
QgsMaterialSettingsRenderingTechnique
Material rendering techniques.
@ Points
Point based rendering, requires point data.
@ Triangles
Triangle based rendering (default).
@ TrianglesFromModel
Triangle based rendering, using a model object source.
@ Lines
Line based rendering, requires line data.
@ TrianglesDataDefined
Triangle based rendering with possibility of datadefined color.
@ InstancedPoints
Instanced based rendering, requiring triangles and point data.
@ TrianglesWithFixedTexture
Triangle based rendering, using a fixed, non-user-configurable texture (e.g. for terrain rendering).