summaryrefslogtreecommitdiffstats
path: root/examples/opengl/hellowindow/hellowindow.h
diff options
context:
space:
mode:
Diffstat (limited to 'examples/opengl/hellowindow/hellowindow.h')
-rw-r--r--examples/opengl/hellowindow/hellowindow.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/examples/opengl/hellowindow/hellowindow.h b/examples/opengl/hellowindow/hellowindow.h
new file mode 100644
index 0000000000..6ff7411251
--- /dev/null
+++ b/examples/opengl/hellowindow/hellowindow.h
@@ -0,0 +1,65 @@
+#include <QWindow>
+
+#include <QtGui/qopengl.h>
+#include <QtGui/qopenglshaderprogram.h>
+
+#include <QColor>
+#include <QTime>
+
+class QOpenGLContext;
+
+class Renderer : public QObject
+{
+ Q_OBJECT
+public:
+ Renderer(const QSurfaceFormat &format, Renderer *share = 0);
+
+ QSurfaceFormat format() const { return m_format; }
+
+public slots:
+ void render(QSurface *surface, const QColor &color, const QSize &viewSize);
+
+private:
+ void initialize();
+
+ qreal m_fAngle;
+ bool m_showBubbles;
+ void paintQtLogo();
+ void createGeometry();
+ void createBubbles(int number);
+ 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);
+ QVector<QVector3D> vertices;
+ QVector<QVector3D> normals;
+ int vertexAttr;
+ int normalAttr;
+ int matrixUniform;
+ int colorUniform;
+
+ bool m_initialized;
+ QSurfaceFormat m_format;
+ QOpenGLContext *m_context;
+ QOpenGLShaderProgram *m_program;
+};
+
+class HelloWindow : public QWindow
+{
+ Q_OBJECT
+public:
+ HelloWindow(Renderer *renderer);
+
+ void updateColor();
+
+signals:
+ void needRender(QSurface *surface, const QColor &color, const QSize &viewSize);
+
+private slots:
+ void render();
+
+private:
+ void mousePressEvent(QMouseEvent *);
+
+ int m_colorIndex;
+ QColor m_color;
+ Renderer *m_renderer;
+};