1 /*************************************************************************** 2 qgspreviewquad.h 3 -------------------------------------- 4 Date : August 2020 5 Copyright : (C) 2020 by Belgacem Nedjima 6 Email : gb underscore 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 QGSPREVIEWQUAD_H 17 #define QGSPREVIEWQUAD_H 18 19 #include <Qt3DCore/QEntity> 20 #include <Qt3DRender/QMaterial> 21 #include <Qt3DRender/QParameter> 22 #include <Qt3DRender/QEffect> 23 24 #define SIP_NO_FILE 25 26 /** 27 * \ingroup 3d 28 * \brief Material component for QgsPreviewQuad object 29 * 30 * \note Not available in Python bindings 31 * \since QGIS 3.16 32 */ 33 class QgsPreviewQuadMaterial : public Qt3DRender::QMaterial 34 { 35 public: 36 //! Constructor 37 QgsPreviewQuadMaterial( Qt3DRender::QAbstractTexture *texture, const QMatrix4x4 &modelMatrix, QVector<Qt3DRender::QParameter *> additionalShaderParameters = QVector<Qt3DRender::QParameter *>(), QNode *parent = nullptr ); 38 private: 39 Qt3DRender::QEffect *mEffect = nullptr; 40 Qt3DRender::QParameter *mTextureParameter = nullptr; 41 Qt3DRender::QParameter *mTextureTransformParameter = nullptr; 42 }; 43 44 /** 45 * \ingroup 3d 46 * \brief Rectangular quad entity used for debugging depth maps 47 * 48 * \note Not available in Python bindings 49 * \since QGIS 3.16 50 */ 51 class QgsPreviewQuad : public Qt3DCore::QEntity 52 { 53 public: 54 55 /** 56 * \brief Construct an object that displays a texture for debugging purposes (example: depth buffer) 57 * \param texture The texture to be rendered 58 * \param centerNDC The center of the texture in opnegl normalized device coordinates 59 * ie. Bottom left of the viewport is (-1, -1), the top right of the viewport is (1, 1) 60 * \param size The size of the displayed rectangle 61 * \param additionalShaderParameters More parameters to pass to the shader 62 * \param parent The parent of the quad 63 */ 64 QgsPreviewQuad( Qt3DRender::QAbstractTexture *texture, const QPointF ¢erNDC, const QSizeF &size, QVector<Qt3DRender::QParameter *> additionalShaderParameters = QVector<Qt3DRender::QParameter *>(), Qt3DCore::QEntity *parent = nullptr ); 65 private: 66 QgsPreviewQuadMaterial *mMaterial = nullptr; 67 }; 68 69 #endif // QGSPREVIEWQUAD_H 70