xref: /OK3568_Linux_fs/app/forlinx/flapp/src/plugins/opengl/glwidget.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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*4882a593Smuzhiyun QT_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