Code_TYMPAN  4.4.0
Industrial site acoustic simulation
TYOpenGLRenderer.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 
27 #ifndef __TY_OPENGL_RENDERER__
28 #define __TY_OPENGL_RENDERER__
29 
32 
34 
36 
40 #include <qmatrix4x4.h>
41 
42 class TYGeometryNode;
48 {
49 public:
54  {
62  };
63 
68 
73 
78  void operator=(const TYOpenGLRenderer&) = delete;
79 
83  void initializeGL();
84 
88  void init();
89 
93  void setRenderMode(RenderMode mode);
94 
102  void invalidateScene(void);
111  void updateDisplayListOverlay(TYRenderContext& renderContext, TYGeometryNode* pElement,
112  TYGeometryNode* pDansCeRepere);
113 
121  void OpenGLRender(TYRenderContext& renderContext, int x = 0, int y = 0);
122 
126  void drawElement(TYRenderContext& renderContext) const;
127 
133  void addOGLElement(OGLElement* pOGLElement);
134 
135  void addLight(OGLLightElement* pOGLElementLight);
136  void removeLights();
137  std::vector<OGLLightElement*> getLights();
138 
139  void setBackground(double* bgColor)
140  {
141  _pBackgroundColor[0] = bgColor[0];
142  _pBackgroundColor[1] = bgColor[1];
143  _pBackgroundColor[2] = bgColor[2];
144  };
145 
151  void removeOGLElement(OGLElement* pOGLElement);
152 
153  void setRenderType(int renderType)
154  {
155  m_renderType = renderType;
156  };
157 
158  void addSelectedElement(TYElement* pElement);
159  void removeSelectedElement(TYElement* pElement);
161 
162 protected:
164  GLuint _displayList;
169 
170  std::vector<OGLElement*> _tabOGLElement;
171 
173  std::vector<TYElement*> _tabSelectedElements;
174 
176  std::vector<OGLLightElement*> _tabLights;
177 
180 
182 
183 private:
187  void _renderScene(TYRenderContext& renderContext) const;
188 
189  // Tell if the scene render cache must be rebuilt
191 
192  void renderBoundingBoxes(TYRenderContext& renderContext) const;
193 
198 };
199 
200 #endif // __TY_OPENGL_RENDERER__
All base classes related to 3D manipulation.
Representation graphique d'un element de base (fichier header)
Contexte de rendu utilisé par les fonctions d'affichage.
Realise le rendu VTK et le rendu OpenGL.
std::vector< TYElement * > _tabSelectedElements
Elements selectionnes.
void _renderScene(TYRenderContext &renderContext) const
0 --> render all, 1 --> render 2D, 2 --> render 3D
void removeSelectedElement(TYElement *pElement)
void addLight(OGLLightElement *pOGLElementLight)
void addOGLElement(OGLElement *pOGLElement)
void invalidateScene(void)
void removeOGLElement(OGLElement *pOGLElement)
std::vector< OGLLightElement * > _tabLights
Liste des lumieres dans la scene 3D.
QMatrix4x4 _boundingBoxScaleMatrix
GLuint _displayList
Display liste globale.
void renderBoundingBoxes(TYRenderContext &renderContext) const
void setBackground(double *bgColor)
RenderMode _renderMode
Mode de rendu.
OGLCamera * _pActiveCamera
void updateDisplayListOverlay(TYRenderContext &renderContext, TYGeometryNode *pElement, TYGeometryNode *pDansCeRepere)
std::vector< OGLElement * > _tabOGLElement
void setRenderMode(RenderMode mode)
double * _pBackgroundColor
TYOpenGLRenderer(const TYOpenGLRenderer &)=delete
void setRenderType(int renderType)
std::vector< OGLLightElement * > getLights()
GLuint _displayListOverlay
Display liste pour les deplacements.
void drawElement(TYRenderContext &renderContext) const
RenderMode getRenderMode()
void operator=(const TYOpenGLRenderer &)=delete
void OpenGLRender(TYRenderContext &renderContext, int x=0, int y=0)
void addSelectedElement(TYElement *pElement)