5 #include <QSurfaceFormat>
6 #include <QOpenGLShaderProgram>
12 class Canvas : public QOpenGLWidget, protected QOpenGLFunctions
17 explicit Canvas(const QSurfaceFormat& format, QWidget* parent=0);
20 void view_orthographic();
21 void view_perspective();
23 void draw_wireframe();
26 void set_status(const QString& s);
28 void load_mesh(Mesh* m, bool is_reload);
31 void paintGL() override;
32 void initializeGL() override;
33 void resizeGL(int width, int height) override;
35 void mousePressEvent(QMouseEvent* event) override;
36 void mouseReleaseEvent(QMouseEvent* event) override;
37 void mouseMoveEvent(QMouseEvent* event) override;
38 void wheelEvent(QWheelEvent* event) override;
40 void set_perspective(float p);
41 void set_drawMode(int mode);
42 void view_anim(float v);
47 QMatrix4x4 transform_matrix() const;
48 QMatrix4x4 view_matrix() const;
50 QOpenGLShaderProgram mesh_shader;
51 QOpenGLShaderProgram mesh_wireframe_shader;
52 QOpenGLShaderProgram quad_shader;
65 Q_PROPERTY(float perspective MEMBER perspective WRITE set_perspective);
66 QPropertyAnimation anim;