// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #ifndef GLWIDGET_H #define GLWIDGET_H #include #include #include QT_FORWARD_DECLARE_CLASS(QOpenGLShaderProgram); QT_FORWARD_DECLARE_CLASS(QOpenGLTexture) class GLWidget : public QOpenGLWidget, protected QOpenGLFunctions { Q_OBJECT public: using QOpenGLWidget::QOpenGLWidget; ~GLWidget(); QSize minimumSizeHint() const override; QSize sizeHint() const override; void rotateBy(int xAngle, int yAngle, int zAngle); void setClearColor(const QColor &color); signals: void clicked(); protected: void initializeGL() override; void paintGL() override; void resizeGL(int width, int height) override; void mousePressEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; private: void makeObject(); QColor clearColor = Qt::black; QPoint lastPos; int xRot = 0; int yRot = 0; int zRot = 0; QOpenGLTexture *textures[6] = {nullptr, nullptr, nullptr, nullptr, nullptr, nullptr}; QOpenGLShaderProgram *program = nullptr; QOpenGLBuffer vbo; }; #endif