26 #include <qmatrix4x4.h>
27 #include <qopengldebug.h>
28 #include <qopenglwidget.h>
30 #include <qsurfaceformat.h>
31 #include <qtextstream.h>
32 #include <qvector3d.h>
38 #define IMG(id) OLocalizator::getPicture("TYRenderWindow", (id))
41 : QOpenGLWidget(parent), _cachedViewport(nullptr, QRect())
54 _pGLLogger =
new QOpenGLDebugLogger(context());
63 oColor.
r = oColor.
g = oColor.
b = 0.5;
81 setFocusProxy(parentWidget());
115 if (!qEnvironmentVariableIsSet(
"TYMPAN_DEBUG_OPENGL_ALL_MESSAGES"))
119 _pGLLogger->enableMessages(QOpenGLDebugMessage::AnySource, QOpenGLDebugMessage::ErrorType);
122 if (qEnvironmentVariableIsSet(
"TYMPAN_DEBUG_OPENGL_SYNC"))
124 _pGLLogger->startLogging(QOpenGLDebugLogger::SynchronousLogging);
128 _pGLLogger->startLogging(QOpenGLDebugLogger::AsynchronousLogging);
143 clock_t timeBefore = clock();
148 clock_t timeAfter = clock();
150 double timeElaspedInSec = ((double)(timeAfter - timeBefore)) / (
double)CLOCKS_PER_SEC;
167 _pActiveCamera, QRect(0, 0, width() * devicePixelRatioF(), height() * devicePixelRatioF()));
175 return point * devicePixelRatioF();
178 static inline const char* printableDebugMessageSource(QOpenGLDebugMessage::Source source)
182 case QOpenGLDebugMessage::APISource:
184 case QOpenGLDebugMessage::WindowSystemSource:
185 return "Window system";
186 case QOpenGLDebugMessage::ShaderCompilerSource:
187 return "Shader compiler";
188 case QOpenGLDebugMessage::ThirdPartySource:
189 return "Third party";
190 case QOpenGLDebugMessage::ApplicationSource:
191 return "Application";
192 case QOpenGLDebugMessage::OtherSource:
194 case QOpenGLDebugMessage::AnySource:
195 case QOpenGLDebugMessage::InvalidSource:
201 static inline const char* printableDebugMessageType(QOpenGLDebugMessage::Type messageType)
205 case QOpenGLDebugMessage::ErrorType:
207 case QOpenGLDebugMessage::DeprecatedBehaviorType:
208 return "Deprecated behavior";
209 case QOpenGLDebugMessage::UndefinedBehaviorType:
210 return "Undefined behavior";
211 case QOpenGLDebugMessage::PortabilityType:
212 return "Portability";
213 case QOpenGLDebugMessage::PerformanceType:
214 return "Performance";
215 case QOpenGLDebugMessage::MarkerType:
217 case QOpenGLDebugMessage::GroupPushType:
219 case QOpenGLDebugMessage::GroupPopType:
221 case QOpenGLDebugMessage::OtherType:
223 case QOpenGLDebugMessage::InvalidType:
224 case QOpenGLDebugMessage::AnyType:
230 static inline const char* printableDebugMessageSeverity(QOpenGLDebugMessage::Severity severity)
234 case QOpenGLDebugMessage::HighSeverity:
236 case QOpenGLDebugMessage::MediumSeverity:
238 case QOpenGLDebugMessage::LowSeverity:
240 case QOpenGLDebugMessage::NotificationSeverity:
241 return "Notification";
242 case QOpenGLDebugMessage::InvalidSeverity:
243 case QOpenGLDebugMessage::AnySeverity:
249 static const char* OGL_DEBUG_MESSAGE_FORMAT =
"OpenGL message\n"
258 QString output = QString(OGL_DEBUG_MESSAGE_FORMAT)
259 .arg(printableDebugMessageType(message.type()))
260 .arg(printableDebugMessageSource(message.source()))
261 .arg(printableDebugMessageSeverity(message.severity()))
262 .arg(message.message());
263 QTextStream(stdout) << output << Qt::endl;
pour l'application Tympan (fichier header)
Classe generique pour une fenetre de modeleur (fichier header)
Contexte de rendu utilisé par les fonctions d'affichage.
association du graphic (OpenGL) au modeleur (fichier header)
void setSize(int w, int h)
void setVisibility(bool bVisible)
void setDisplayPosition(double displayPositionX, double displayPositionY)
void setColor(const OColor &oColor)
void setTextToDisplay(const QString &qsText)
void setFont(const QString &qsFontPath)
Generic class for a modeler window.
virtual TYRenderContext createRenderContext()
Realise le rendu VTK et le rendu OpenGL.
void addOGLElement(OGLElement *pOGLElement)
void OpenGLRender(TYRenderContext &renderContext, int x=0, int y=0)
void handleLoggedMessage(QOpenGLDebugMessage debugMessage)
std::array< double, 50 > renderTime
virtual void initializeGL()
const TYRenderViewport & getViewport() const
OGLCamera * _pActiveCamera
TYRenderViewport _cachedViewport
virtual void resizeGL(int w, int h)
QPoint toViewport(QPoint point)
QOpenGLDebugLogger * _pGLLogger
TYOpenGLRenderer * _pRenderer
bool _viewportNeedsUpdate
void showInfos(bool state)
TYOpenGLRenderer * getRenderer()
OGLTextElement * _pOGLTextInfoLabel
TYRenderWindow(QWidget *pParent=0, const char *name=0)