24#include <Qt3DRender/QEffect>
25#include <Qt3DRender/QGraphicsApiFilter>
26#include <Qt3DRender/QParameter>
27#include <Qt3DRender/QTechnique>
29#include "moc_qgshighlightmaterial.cpp"
31using namespace Qt::StringLiterals;
41QgsHighlightMaterial::~QgsHighlightMaterial() =
default;
45 Qt3DRender::QEffect *effect =
new Qt3DRender::QEffect;
46 Qt3DRender::QTechnique *technique =
new Qt3DRender::QTechnique;
47 technique->graphicsApiFilter()->setApi( Qt3DRender::QGraphicsApiFilter::OpenGL );
48 technique->graphicsApiFilter()->setProfile( Qt3DRender::QGraphicsApiFilter::CoreProfile );
49 technique->graphicsApiFilter()->setMajorVersion( 3 );
50 technique->graphicsApiFilter()->setMinorVersion( 3 );
52 Qt3DRender::QRenderPass *pass =
new Qt3DRender::QRenderPass;
54 Qt3DRender::QShaderProgram *shaderProgram =
new Qt3DRender::QShaderProgram;
55 switch ( renderingTechnique )
62 shaderProgram->setVertexShaderCode( Qt3DRender::QShaderProgram::loadSource( QUrl( u
"qrc:/shaders/default.vert"_s ) ) );
67 shaderProgram->setVertexShaderCode( Qt3DRender::QShaderProgram::loadSource( QUrl( u
"qrc:/shaders/instanced.vert"_s ) ) );
80 shaderProgram->setFragmentShaderCode( Qt3DRender::QShaderProgram::loadSource( QUrl( u
"qrc:/shaders/singlecolor.frag"_s ) ) );
81 pass->setShaderProgram( shaderProgram );
86 color.setAlphaF( alpha );
88 pass->addParameter( colorParam );
90 technique->addRenderPass( pass );
91 effect->addTechnique( technique );
static const QColor DEFAULT_HIGHLIGHT_COLOR
Default highlight color.
MaterialRenderingTechnique
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.
@ Billboards
Flat billboard rendering.
@ 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).
static QColor srgbToLinear(const QColor &color)
Converts a SRGB color to a linear 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.