Code_TYMPAN  4.4.0
Industrial site acoustic simulation
OGLMesh.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) <2012-2024> <EDF-DTG> <FRANCE>
3  * This file is part of Code_TYMPAN (R).
4  * Code_TYMPAN (R) is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  * Code_TYMPAN (R) is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11  * See the GNU General Public License for more details.
12  * You should have received a copy of the GNU General Public License along
13  * with Code_TYMPAN (R). If not, see <https://www.gnu.org/licenses/>.
14  */
15 
16 #ifndef __OGL_MESH__
17 #define __OGL_MESH__
18 
19 #include <qcolor.h>
20 #include <qvector2d.h>
21 #include <qvector3d.h>
22 #include <vector>
25 
27 {
28  Lines,
29  LineStrip,
30  LineLoop,
31  Points,
32  Triangles,
33  Quads,
34 };
35 
41 class OGLMesh
42 {
43 public:
47  const std::vector<QVector3D>& vertices() const;
48 
52  const std::vector<QVector2D>& textureCoordinates() const;
53 
57  const std::vector<float>& verticesColors() const;
58 
62  const std::vector<QVector3D>& normals() const;
63 
67  const std::vector<unsigned int>& indices() const;
68 
73 
78 
82  const OGLSimpleMaterial& material() const;
83 
88  {
89  return _primitiveType;
90  }
91 
95  const OBox boundingBox() const
96  {
97  return _boundingBox;
98  }
99 
100 protected:
101  std::vector<QVector3D> _vertices;
102  std::vector<float> _verticesColors;
103  std::vector<QVector3D> _normals;
104  std::vector<QVector2D> _textureCoordinates;
105  std::vector<unsigned int> _indices;
109  void recomputeBoundingBox();
110 };
111 
112 #endif // __OGL_MESH__
All base classes related to 3D manipulation.
OGLPrivimitiveType
Definition: OGLMesh.h:27
The box class.
Definition: 3d.h:1346
std::vector< QVector3D > _vertices
Definition: OGLMesh.h:101
OGLPrivimitiveType _primitiveType
Definition: OGLMesh.h:107
OGLSimpleMaterial _material
Definition: OGLMesh.h:106
const OBox boundingBox() const
Definition: OGLMesh.h:95
OBox _boundingBox
Definition: OGLMesh.h:108
const std::vector< unsigned int > & indices() const
Definition: OGLMesh.cpp:40
const std::vector< QVector3D > & normals() const
Definition: OGLMesh.cpp:30
const std::vector< QVector3D > & vertices() const
Definition: OGLMesh.cpp:20
std::vector< unsigned int > _indices
Definition: OGLMesh.h:105
std::vector< float > _verticesColors
Definition: OGLMesh.h:102
void setMaterial(const OGLSimpleMaterial &material)
Definition: OGLMesh.cpp:45
const std::vector< QVector2D > & textureCoordinates() const
Definition: OGLMesh.cpp:35
OGLSimpleMaterial & material()
Definition: OGLMesh.cpp:50
std::vector< QVector3D > _normals
Definition: OGLMesh.h:103
const std::vector< float > & verticesColors() const
Definition: OGLMesh.cpp:25
std::vector< QVector2D > _textureCoordinates
Definition: OGLMesh.h:104
void recomputeBoundingBox()
Definition: OGLMesh.cpp:59
const OGLPrivimitiveType primitiveType() const
Definition: OGLMesh.h:87