QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
qgsskyboxentity.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsskyboxentity.h
3  --------------------------------------
4  Date : August 2020
5  Copyright : (C) 2020 by Belgacem Nedjima
6  Email : gb uderscore nedjima at esi dot dz
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 QGSSKYBOXENTITY_H
17 #define QGSSKYBOXENTITY_H
18 
19 #include <Qt3DCore/QEntity>
20 #include <QVector3D>
21 #include <Qt3DRender/QTexture>
22 #include <Qt3DExtras/QCuboidMesh>
23 #include <Qt3DRender/QEffect>
24 #include <Qt3DRender/QMaterial>
25 #include <Qt3DRender/QShaderProgram>
26 #include <Qt3DRender/QFilterKey>
27 #include <Qt3DRender/QRenderPass>
28 #include <Qt3DExtras/QPlaneMesh>
29 #include <Qt3DRender/QParameter>
30 
31 #include "qgis_3d.h"
32 
33 class QgsImageTexture;
34 
35 #define SIP_NO_FILE
36 
44 class _3D_EXPORT QgsSkyboxEntity : public Qt3DCore::QEntity
45 {
46  Q_OBJECT
47  public:
50  {
52  DistinctTexturesSkybox
53  };
54  public:
56  QgsSkyboxEntity( QNode *parent = nullptr );
57 
59  virtual SkyboxType type() const = 0;
60 
61  protected:
62  Qt3DRender::QEffect *mEffect = nullptr;
63  Qt3DRender::QMaterial *mMaterial = nullptr;
64  Qt3DRender::QTechnique *mGl3Technique = nullptr;
65  Qt3DRender::QFilterKey *mFilterKey = nullptr;
66  Qt3DRender::QRenderPass *mGl3RenderPass = nullptr;
67  Qt3DExtras::QCuboidMesh *mMesh = nullptr;
68  Qt3DRender::QParameter *mGammaStrengthParameter = nullptr;
69  Qt3DRender::QParameter *mTextureParameter = nullptr;
70 };
71 
78 class _3D_EXPORT QgsPanoramicSkyboxEntity : public QgsSkyboxEntity
79 {
80  Q_OBJECT
81 
82  public:
84  QgsPanoramicSkyboxEntity( const QString &texturePath, Qt3DCore::QNode *parent = nullptr );
85 
87  QString texturePath() const { return mTexturePath; }
89  SkyboxType type() const override { return SkyboxType::PanoramicSkybox; }
90 
91  private:
92  void reloadTexture();
93  private:
94  QString mTexturePath;
95  Qt3DRender::QTextureLoader *mLoadedTexture = nullptr;
96  Qt3DRender::QShaderProgram *mGlShader = nullptr;
97 };
98 
105 class _3D_EXPORT QgsCubeFacesSkyboxEntity : public QgsSkyboxEntity
106 {
107  Q_OBJECT
108 
109  public:
111  QgsCubeFacesSkyboxEntity( const QString &posX, const QString &posY, const QString &posZ, const QString &negX, const QString &negY, const QString &negZ, Qt3DCore::QNode *parent = nullptr );
112 
114  SkyboxType type() const override { return SkyboxType::DistinctTexturesSkybox; }
115 
116  private:
117  void init();
118  void reloadTexture();
119  private:
120  QMap<Qt3DRender::QTextureCubeMap::CubeMapFace, QString> mCubeFacesPaths;
121  Qt3DRender::QShaderProgram *mGlShader = nullptr;
122  QVector<Qt3DRender::QTextureImage *> mFacesTextureImages;
123  Qt3DRender::QTextureCubeMap *mCubeMap = nullptr;
124 };
125 
126 #endif // QGSSKYBOXENTITY_H
QgsPanoramicSkyboxEntity::type
SkyboxType type() const override
Returns the type of the current skybox.
Definition: qgsskyboxentity.h:89
QgsSkyboxEntity
Base class for all skybox types.
Definition: qgsskyboxentity.h:44
QgsPanoramicSkyboxEntity::texturePath
QString texturePath() const
Returns the path of the current texture in use.
Definition: qgsskyboxentity.h:87
QgsImageTexture
Holds an image that can be used as a texture in the 3D view.
Definition: qgsimagetexture.h:36
QgsCubeFacesSkyboxEntity::type
SkyboxType type() const override
Returns the type of the current skybox.
Definition: qgsskyboxentity.h:114
QgsSkyboxEntity::PanoramicSkybox
@ PanoramicSkybox
Definition: qgsskyboxentity.h:51
QgsSkyboxEntity::SkyboxType
SkyboxType
Skybox type enumeration.
Definition: qgsskyboxentity.h:49
QgsPanoramicSkyboxEntity
A skybox constructed from a panoramic image.
Definition: qgsskyboxentity.h:78
QgsCubeFacesSkyboxEntity
A skybox constructed from a 6 cube faces.
Definition: qgsskyboxentity.h:105