QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
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
33class QgsImageTexture;
34
35#define SIP_NO_FILE
36
44class _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
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
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
A skybox constructed from a 6 cube faces.
SkyboxType type() const override
Returns the type of the current skybox.
Holds an image that can be used as a texture in the 3D view.
A skybox constructed from a panoramic image.
QString texturePath() const
Returns the path of the current texture in use.
SkyboxType type() const override
Returns the type of the current skybox.
Base class for all skybox types.
virtual SkyboxType type() const =0
Returns the type of the current skybox.
SkyboxType
Skybox type enumeration.