SWBF2-Classic-Msh-Viewer/QtMeshViewer/Header/GeometryEngine.h

49 lines
930 B
C
Raw Normal View History

2016-12-29 12:37:15 +00:00
#pragma once
#include <QObject>
#include <QOpenGLFunctions>
#include <QOpenGLShaderProgram>
#include <QOpenGLBuffer>
2016-12-29 13:06:25 +00:00
#include <QVector>
#include "FileInterface.h"
struct DrawInformation {
unsigned int offset;
unsigned int size;
unsigned int textureIndex;
QMatrix4x4 modelMatrix;
};
class GeometryEngine : public QObject, protected QOpenGLFunctions
{
Q_OBJECT
public:
GeometryEngine(QObject *parent = Q_NULLPTR);
2016-12-29 12:37:15 +00:00
virtual ~GeometryEngine();
// attributes
private:
2016-12-29 13:06:25 +00:00
QOpenGLBuffer m_arrayBuf;
QOpenGLBuffer m_indexBuf;
QVector<Material>* m_materials = Q_NULLPTR;
Material* m_defaultMaterial;
BoundingBox m_boundings;
QVector<DrawInformation> m_drawList;
// functions
private:
void clearData();
void setupPipeline(QOpenGLShaderProgram * program);
2016-12-29 12:37:15 +00:00
public:
void drawGeometry(QOpenGLShaderProgram *program);
2017-01-07 14:59:16 +00:00
void loadFile(QString filePath);
// signals
signals:
void requestResetView();
void requestUpdate();
};