QGIS API Documentation 4.1.0-Master (06b85429c24)
Loading...
Searching...
No Matches
qgsphongtexturedmaterial.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsphongtexturedmaterial.h
3 --------------------------------------
4 Date : August 2024
5 Copyright : (C) 2024 by Jean Felder
6 Email : jean dot felder at oslandia 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#ifndef QGSPHONGTEXTUREDMATERIAL_H
17#define QGSPHONGTEXTUREDMATERIAL_H
18
19#include "qgis_3d.h"
20#include "qgsmaterial.h"
21
22#include <QColor>
23#include <QObject>
24#include <Qt3DRender/QTexture>
25
26#define SIP_NO_FILE
27
28namespace Qt3DRender
29{
30 class QParameter;
31 class QShaderProgram;
32 class QRenderPass;
33 class QFilterKey;
34} // namespace Qt3DRender
35
37
43class _3D_EXPORT QgsPhongTexturedMaterial : public QgsMaterial
44{
45 Q_OBJECT
46
47 public:
51 explicit QgsPhongTexturedMaterial( Qt3DCore::QNode *parent = nullptr );
52 ~QgsPhongTexturedMaterial() override;
53
54 public slots:
56 void setAmbient( const QColor &ambient );
57
64 void setDiffuseTexture( Qt3DRender::QAbstractTexture *texture );
65
66 void setDiffuseTextureScale( float textureScale );
67 void setDiffuseTextureRotation( float textureRotation );
68 void setDiffuseTextureOffset( float textureOffsetX, float textureOffsetY );
70 void setSpecular( const QColor &specular );
71 void setShininess( float shininess );
72 void setOpacity( float opacity );
73
79 void setDataDefinedTextureTransformEnabled( bool enabled );
80
81 private:
82 void init();
83
84 void updateVertexShader();
85
86 Qt3DRender::QParameter *mAmbientParameter = nullptr;
87 Qt3DRender::QParameter *mDiffuseTextureParameter = nullptr;
88 Qt3DRender::QParameter *mDiffuseTextureScaleParameter = nullptr;
89 Qt3DRender::QParameter *mDiffuseTextureRotationParameter = nullptr;
90 Qt3DRender::QParameter *mDiffuseTextureOffsetParameter = nullptr;
91 Qt3DRender::QParameter *mSpecularParameter = nullptr;
92 Qt3DRender::QParameter *mShininessParameter = nullptr;
93 Qt3DRender::QParameter *mOpacityParameter = nullptr;
94
95 Qt3DRender::QEffect *mEffect = nullptr;
96 Qt3DRender::QTechnique *mGL3Technique = nullptr;
97 Qt3DRender::QRenderPass *mGL3RenderPass = nullptr;
98 Qt3DRender::QShaderProgram *mGL3Shader = nullptr;
99 Qt3DRender::QFilterKey *mFilterKey = nullptr;
100
101 bool mDataDefinedTextureTransformEnabled = false;
102};
103
105
106#endif // QGSPHONGTEXTUREDMATERIAL_H
Base class for all materials used within QGIS 3D views.
Definition qgsmaterial.h:40