QGIS API Documentation
4.3.0-Master (52aa6503bed)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
3d
materials
qgsglobematerial.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgsglobematerial.cpp
3
--------------------------------------
4
Date : April 2025
5
Copyright : (C) 2025 by Martin Dobias
6
Email : wonder dot sk at gmail dot com
7
***************************************************************************
8
* *
9
* This program is free software; you can redistribute it and/or modify *
10
* it under the terms of the GNU General Public License as published by *
11
* the Free Software Foundation; either version 2 of the License, or *
12
* (at your option) any later version. *
13
* *
14
***************************************************************************/
15
16
#include "
qgsglobematerial.h
"
17
18
#include <QString>
19
#include <QUrl>
20
#include <Qt3DRender/QEffect>
21
#include <Qt3DRender/QGraphicsApiFilter>
22
#include <Qt3DRender/QParameter>
23
#include <Qt3DRender/QRenderPass>
24
#include <Qt3DRender/QShaderProgram>
25
#include <Qt3DRender/QTechnique>
26
#include <Qt3DRender/QTexture>
27
28
#include "moc_qgsglobematerial.cpp"
29
30
using namespace
Qt::StringLiterals;
31
33
QgsGlobeMaterial::QgsGlobeMaterial( QNode *parent )
34
:
QgsMaterial
( parent )
35
, mTextureParameter( new
Qt3DRender
::QParameter( u
"diffuseTexture"
_s, new
Qt3DRender
::QTexture2D ) )
36
, mDiffuseTextureScaleParameter( new
Qt3DRender
::QParameter( u
"texCoordScale"
_s, 1.0f ) )
37
, mGL3Technique( new
Qt3DRender
::QTechnique( this ) )
38
, mGL3RenderPass( new
Qt3DRender
::QRenderPass( this ) )
39
, mGL3Shader( new
Qt3DRender
::QShaderProgram( this ) )
40
, mFilterKey( new
Qt3DRender
::QFilterKey( this ) )
41
{
42
init();
43
}
44
45
QgsGlobeMaterial::~QgsGlobeMaterial() =
default
;
46
47
48
void
QgsGlobeMaterial::init()
49
{
50
Qt3DRender::QEffect *effect =
new
Qt3DRender::QEffect();
51
52
effect->addParameter( mTextureParameter );
53
effect->addParameter( mDiffuseTextureScaleParameter );
54
55
mGL3Shader->setFragmentShaderCode( Qt3DRender::QShaderProgram::loadSource( QUrl( u
"qrc:/shaders/globe.frag"
_s ) ) );
56
mGL3Shader->setVertexShaderCode( Qt3DRender::QShaderProgram::loadSource( QUrl( u
"qrc:/shaders/default.vert"
_s ) ) );
57
58
mGL3Technique->graphicsApiFilter()->setApi( Qt3DRender::QGraphicsApiFilter::OpenGL );
59
mGL3Technique->graphicsApiFilter()->setMajorVersion( 3 );
60
mGL3Technique->graphicsApiFilter()->setMinorVersion( 1 );
61
mGL3Technique->graphicsApiFilter()->setProfile( Qt3DRender::QGraphicsApiFilter::CoreProfile );
62
63
mFilterKey->setParent(
this
);
64
mFilterKey->setName( u
"renderingStyle"
_s );
65
mFilterKey->setValue( u
"forward"
_s );
66
67
mGL3Technique->addFilterKey( mFilterKey );
68
mGL3RenderPass->setShaderProgram( mGL3Shader );
69
mGL3Technique->addRenderPass( mGL3RenderPass );
70
effect->addTechnique( mGL3Technique );
71
72
setEffect( effect );
73
}
74
75
void
QgsGlobeMaterial::setTexture( Qt3DRender::QAbstractTexture *texture )
76
{
77
mTextureParameter->setValue( QVariant::fromValue( texture ) );
78
}
79
80
Qt3DRender::QAbstractTexture *QgsGlobeMaterial::texture()
const
81
{
82
return
mTextureParameter->value().value<Qt3DRender::QAbstractTexture *>();
83
}
84
QgsMaterial
Base class for all materials used within QGIS 3D views.
Definition
qgsmaterial.h:40
Qt3DRender
Definition
qgs3d.h:45
qgsglobematerial.h
Generated on
for QGIS API Documentation by
1.17.0