46 lines
1023 B
C++
46 lines
1023 B
C++
#pragma once
|
|
#include "..\Header\FileInterface.h"
|
|
#include <QObject>
|
|
#include <QOpenGLFunctions>
|
|
#include <QOpenGLShaderProgram>
|
|
#include <QOpenGLBuffer>
|
|
#include <QOpenGLTexture>
|
|
#include <QVector>
|
|
|
|
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);
|
|
virtual ~GeometryEngine();
|
|
|
|
private:
|
|
QOpenGLBuffer m_arrayBuf;
|
|
QOpenGLBuffer m_indexBuf;
|
|
QVector<QOpenGLTexture*> m_textures;
|
|
QVector<DrawInformation> m_drawList;
|
|
BoundingBox m_boundings;
|
|
|
|
void loadTexture(QString filePath, QString fileName);
|
|
void clearData();
|
|
|
|
public slots:
|
|
void loadFile(QString filePath);
|
|
void drawGeometry(QOpenGLShaderProgram *program);
|
|
|
|
signals:
|
|
void requestResetView();
|
|
void sendMessage(QString message, int severity);
|
|
void requestUpdate();
|
|
void sendFileInfo(QString name, QStringList textures, int vertices, int triangle);
|
|
};
|
|
|