QGIS API Documentation 3.41.0-Master (3440c17df1d)
Loading...
Searching...
No Matches
qgstessellatedpolygongeometry.h
Go to the documentation of this file.
1/***************************************************************************
2 qgstessellatedpolygongeometry.h
3 --------------------------------------
4 Date : July 2017
5 Copyright : (C) 2017 by Martin Dobias
6 Email : wonder dot sk at gmail 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 QGSTESSELLATEDPOLYGONGEOMETRY_H
17#define QGSTESSELLATEDPOLYGONGEOMETRY_H
18
19#include "qgsfeatureid.h"
20
21#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
22#include <Qt3DRender/QGeometry>
23#else
24#include <Qt3DCore/QGeometry>
25#endif
26
28class QgsPolygon;
29class QgsPointXY;
30
31namespace QgsRayCastingUtils
32{
33 class Ray3D;
34}
35
36#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
37namespace Qt3DRender
38{
39 class QBuffer;
40}
41#else
42namespace Qt3DCore
43{
44 class QBuffer;
45}
46#endif
47
48#define SIP_NO_FILE
49
60#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
61class QgsTessellatedPolygonGeometry : public Qt3DRender::QGeometry
62#else
63class QgsTessellatedPolygonGeometry : public Qt3DCore::QGeometry
64#endif
65{
66 Q_OBJECT
67 public:
69 QgsTessellatedPolygonGeometry( bool _withNormals = true, bool invertNormals = false, bool addBackFaces = false, bool addTextureCoords = false, QNode *parent = nullptr );
70
72 bool invertNormals() const { return mInvertNormals; }
74 void setInvertNormals( bool invert ) { mInvertNormals = invert; }
75
80 bool addBackFaces() const { return mAddBackFaces; }
81
86 void setAddBackFaces( bool add ) { mAddBackFaces = add; }
87
92 void setAddTextureCoords( bool add ) { mAddTextureCoords = add; }
93
99 void setData( const QByteArray &vertexBufferData, int vertexCount, const QVector<QgsFeatureId> &triangleIndexFids, const QVector<uint> &triangleIndexStartingIndices );
100
105 QgsFeatureId triangleIndexToFeatureId( uint triangleIndex ) const;
106
108 QVector<QgsFeatureId> featureIds() const { return mTriangleIndexFids; }
109
111 QVector<uint> triangleIndexStartingIndices() const { return mTriangleIndexStartingIndices; }
112
113 friend class Qgs3DSceneExporter;
114 private:
115
116#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
117 Qt3DRender::QAttribute *mPositionAttribute = nullptr;
118 Qt3DRender::QAttribute *mNormalAttribute = nullptr;
119 Qt3DRender::QAttribute *mTextureCoordsAttribute = nullptr;
120 Qt3DRender::QBuffer *mVertexBuffer = nullptr;
121#else
122 Qt3DCore::QAttribute *mPositionAttribute = nullptr;
123 Qt3DCore::QAttribute *mNormalAttribute = nullptr;
124 Qt3DCore::QAttribute *mTextureCoordsAttribute = nullptr;
125 Qt3DCore::QBuffer *mVertexBuffer = nullptr;
126#endif
127
128 QVector<QgsFeatureId> mTriangleIndexFids;
129 QVector<uint> mTriangleIndexStartingIndices;
130
131 bool mWithNormals = true;
132 bool mInvertNormals = false;
133 bool mAddBackFaces = false;
134 bool mAddTextureCoords = false;
135};
136
137#endif // QGSTESSELLATEDPOLYGONGEOMETRY_H
Entity that handles the exporting of 3D scene.
A class to represent a 2D point.
Definition qgspointxy.h:60
Polygon geometry type.
Definition qgspolygon.h:33
QVector< QgsFeatureId > featureIds() const
Returns included feature ids.
void setInvertNormals(bool invert)
Sets whether the normals of triangles will be inverted (useful for fixing clockwise / counter-clockwi...
QgsFeatureId triangleIndexToFeatureId(uint triangleIndex) const
Returns ID of the feature to which given triangle index belongs (used for picking).
bool addBackFaces() const
Returns whether also triangles facing the other side will be created.
void setData(const QByteArray &vertexBufferData, int vertexCount, const QVector< QgsFeatureId > &triangleIndexFids, const QVector< uint > &triangleIndexStartingIndices)
Initializes vertex buffer (and other members) from data that were already tessellated.
void setAddBackFaces(bool add)
Sets whether also triangles facing the other side will be created.
void setAddTextureCoords(bool add)
Sets whether the texture coordinates will be generated.
bool invertNormals() const
Returns whether the normals of triangles will be inverted (useful for fixing clockwise / counter-cloc...
QVector< uint > triangleIndexStartingIndices() const
Returns triangle index for features. For a feature featureIds()[i], matching triangles start at trian...
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features