QGIS API Documentation 3.41.0-Master (cea29feecf2)
Loading...
Searching...
No Matches
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
55 public:
57 QgsSkyboxEntity( QNode *parent = nullptr );
58
60 virtual SkyboxType type() const = 0;
61
62 protected:
63 Qt3DRender::QEffect *mEffect = nullptr;
64 Qt3DRender::QMaterial *mMaterial = nullptr;
65 Qt3DRender::QTechnique *mGl3Technique = nullptr;
66 Qt3DRender::QFilterKey *mFilterKey = nullptr;
67 Qt3DRender::QRenderPass *mGl3RenderPass = nullptr;
68 Qt3DExtras::QCuboidMesh *mMesh = nullptr;
69 Qt3DRender::QParameter *mGammaStrengthParameter = nullptr;
70 Qt3DRender::QParameter *mTextureParameter = nullptr;
71};
72
80{
81 Q_OBJECT
82
83 public:
85 QgsPanoramicSkyboxEntity( const QString &texturePath, Qt3DCore::QNode *parent = nullptr );
86
88 QString texturePath() const { return mTexturePath; }
90 SkyboxType type() const override { return SkyboxType::PanoramicSkybox; }
91
92 private:
93 void reloadTexture();
94
95 private:
96 QString mTexturePath;
97 Qt3DRender::QTextureLoader *mLoadedTexture = nullptr;
98 Qt3DRender::QShaderProgram *mGlShader = nullptr;
99};
100
108{
109 Q_OBJECT
110
111 public:
113 QgsCubeFacesSkyboxEntity( const QString &posX, const QString &posY, const QString &posZ, const QString &negX, const QString &negY, const QString &negZ, Qt3DCore::QNode *parent = nullptr );
114
116 SkyboxType type() const override { return SkyboxType::DistinctTexturesSkybox; }
117
118 private:
119 void init();
120 void reloadTexture();
121
122 private:
123 QMap<Qt3DRender::QTextureCubeMap::CubeMapFace, QString> mCubeFacesPaths;
124 Qt3DRender::QShaderProgram *mGlShader = nullptr;
125 QVector<Qt3DRender::QTextureImage *> mFacesTextureImages;
126 Qt3DRender::QTextureCubeMap *mCubeMap = nullptr;
127};
128
129#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.