51 lines
1013 B
C++
51 lines
1013 B
C++
#pragma once
|
|
|
|
#include "geometryengine.h"
|
|
|
|
#include <QOpenGLWidget>
|
|
#include <QOpenGLFunctions>
|
|
#include <QMatrix4x4>
|
|
#include <QQuaternion>
|
|
#include <QVector2D>
|
|
#include <QBasicTimer>
|
|
#include <QOpenGLShaderProgram>
|
|
#include <QOpenGLTexture>
|
|
|
|
class GeometryEngine;
|
|
|
|
class OglViewerWidget : public QOpenGLWidget, protected QOpenGLFunctions
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit OglViewerWidget(QWidget *parent = 0);
|
|
~OglViewerWidget();
|
|
|
|
protected:
|
|
void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE;
|
|
void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE;
|
|
void timerEvent(QTimerEvent *e) Q_DECL_OVERRIDE;
|
|
|
|
void initializeGL() Q_DECL_OVERRIDE;
|
|
void resizeGL(int w, int h) Q_DECL_OVERRIDE;
|
|
void paintGL() Q_DECL_OVERRIDE;
|
|
|
|
void initShaders();
|
|
void initTextures();
|
|
|
|
private:
|
|
QBasicTimer timer;
|
|
QOpenGLShaderProgram program;
|
|
GeometryEngine *geometries;
|
|
|
|
QOpenGLTexture *texture;
|
|
|
|
QMatrix4x4 projection;
|
|
|
|
QVector2D mousePressPosition;
|
|
QVector3D rotationAxis;
|
|
qreal angularSpeed;
|
|
QQuaternion rotation;
|
|
};
|
|
|