diff options
author | Friedemann Kleint <[email protected]> | 2022-01-24 16:38:02 +0100 |
---|---|---|
committer | Friedemann Kleint <[email protected]> | 2022-01-25 15:54:05 +0100 |
commit | f172b964f6d9fc8cadeb7b5efeb3f59c0f8f16f6 (patch) | |
tree | 2824827877b7971fe8b4834acdbada107ca5b26b /examples/opengl/threadedqopenglwidget/glwidget.h | |
parent | 2d95b7534530fec1e1e52ef7e8be289abb48b822 (diff) |
threadedqopenglwidget example: Split out class Renderer
This makes the code clearer and decouples it from the
GLWidget.
As a drive-by, add a global shortcut to close.
Pick-to: 6.3 6.2
Change-Id: I3469d29bc367acc17c5f8acf9d46219259b8315b
Reviewed-by: Laszlo Agocs <[email protected]>
Diffstat (limited to 'examples/opengl/threadedqopenglwidget/glwidget.h')
-rw-r--r-- | examples/opengl/threadedqopenglwidget/glwidget.h | 57 |
1 files changed, 4 insertions, 53 deletions
diff --git a/examples/opengl/threadedqopenglwidget/glwidget.h b/examples/opengl/threadedqopenglwidget/glwidget.h index 2bff56c471e..86a1da4fc2f 100644 --- a/examples/opengl/threadedqopenglwidget/glwidget.h +++ b/examples/opengl/threadedqopenglwidget/glwidget.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. @@ -52,59 +52,10 @@ #define GLWIDGET_H #include <QOpenGLWidget> -#include <QOpenGLFunctions> -#include <QOpenGLShaderProgram> -#include <QOpenGLBuffer> -#include <QVector3D> -#include <QMatrix4x4> -#include <QThread> -#include <QMutex> -#include <QWaitCondition> -#include <QElapsedTimer> -class GLWidget; +QT_FORWARD_DECLARE_CLASS(QThread) -class Renderer : public QObject, protected QOpenGLFunctions -{ - Q_OBJECT - -public: - Renderer(GLWidget *w); - void lockRenderer() { m_renderMutex.lock(); } - void unlockRenderer() { m_renderMutex.unlock(); } - QMutex *grabMutex() { return &m_grabMutex; } - QWaitCondition *grabCond() { return &m_grabCond; } - void prepareExit() { m_exiting = true; m_grabCond.wakeAll(); } - -signals: - void contextWanted(); - -public slots: - void render(); - -private: - void paintQtLogo(); - void createGeometry(); - void quad(qreal x1, qreal y1, qreal x2, qreal y2, qreal x3, qreal y3, qreal x4, qreal y4); - void extrude(qreal x1, qreal y1, qreal x2, qreal y2); - - bool m_inited = false; - qreal m_fAngle = 0; - qreal m_fScale = 1; - QList<QVector3D> vertices; - QList<QVector3D> normals; - QOpenGLShaderProgram program; - QOpenGLBuffer vbo; - int vertexAttr = 0; - int normalAttr = 0; - int matrixUniform = 0; - GLWidget *m_glwidget = nullptr; - QMutex m_renderMutex; - QElapsedTimer m_elapsed; - QMutex m_grabMutex; - QWaitCondition m_grabCond; - bool m_exiting = false; -}; +class Renderer; class GLWidget : public QOpenGLWidget { @@ -133,4 +84,4 @@ private: Renderer *m_renderer; }; -#endif +#endif // GLWIDGET_H |