1*4882a593Smuzhiyun #ifndef GLWIDGET_H 2*4882a593Smuzhiyun #define GLWIDGET_H 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #include <QOpenGLWidget> 5*4882a593Smuzhiyun #include <QOpenGLFunctions> 6*4882a593Smuzhiyun #include <QOpenGLBuffer> 7*4882a593Smuzhiyun #include <QVector3D> 8*4882a593Smuzhiyun #include <QMatrix4x4> 9*4882a593Smuzhiyun #include <QTime> 10*4882a593Smuzhiyun #include <QVector> 11*4882a593Smuzhiyun #include <QPushButton> 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun QT_FORWARD_DECLARE_CLASS(QOpenGLTexture) QT_FORWARD_DECLARE_CLASS(QOpenGLShader)15*4882a593SmuzhiyunQT_FORWARD_DECLARE_CLASS(QOpenGLShader) 16*4882a593Smuzhiyun QT_FORWARD_DECLARE_CLASS(QOpenGLShaderProgram) 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun class GLWidget : public QOpenGLWidget, protected QOpenGLFunctions 19*4882a593Smuzhiyun { 20*4882a593Smuzhiyun Q_OBJECT 21*4882a593Smuzhiyun public: 22*4882a593Smuzhiyun GLWidget( const QColor &background); 23*4882a593Smuzhiyun ~GLWidget(); 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun public slots: 26*4882a593Smuzhiyun void loadAscllStl(QString filename, qreal ratio); 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun protected: 29*4882a593Smuzhiyun void paintGL() override; 30*4882a593Smuzhiyun void initializeGL() override; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun private: 33*4882a593Smuzhiyun void paintFLLogo(); 34*4882a593Smuzhiyun void createGeometry(); 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun qreal m_fAngle; 37*4882a593Smuzhiyun qreal m_fScale; 38*4882a593Smuzhiyun QVector<QVector3D> m_vertices; 39*4882a593Smuzhiyun QVector<QVector3D> m_normals; 40*4882a593Smuzhiyun int m_frames; 41*4882a593Smuzhiyun QTime m_time; 42*4882a593Smuzhiyun QOpenGLShader *m_vshader1; 43*4882a593Smuzhiyun QOpenGLShader *m_fshader1; 44*4882a593Smuzhiyun QOpenGLShaderProgram *m_program1; 45*4882a593Smuzhiyun QOpenGLBuffer m_vbo1; 46*4882a593Smuzhiyun int m_vertexAttr1; 47*4882a593Smuzhiyun int m_normalAttr1; 48*4882a593Smuzhiyun int m_matrixUniform1; 49*4882a593Smuzhiyun bool m_transparent; 50*4882a593Smuzhiyun QColor m_background; 51*4882a593Smuzhiyun }; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun #endif 54