-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmoleculardynamicsrenderer.h
50 lines (39 loc) · 1.25 KB
/
moleculardynamicsrenderer.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#ifndef MOLECULARDYNAMICSRENDERER_H
#define MOLECULARDYNAMICSRENDERER_H
#include "cpglquads.h"
#include "cpglcube.h"
#include <QtQuick/QQuickItem>
#include <QtGui/QOpenGLShaderProgram>
#include <QElapsedTimer>
#include <QMatrix4x4>
#include <QQuickFramebufferObject>
#include <QThread>
#include <QMutex>
class MolecularDynamicsRenderer : public QQuickFramebufferObject::Renderer
{
public:
MolecularDynamicsRenderer();
~MolecularDynamicsRenderer();
void setViewportSize(const QSize &size) { m_viewportSize = size; }
void resetProjection();
void setModelViewMatrices(double zoom, double tilt, double pan, double roll, const QVector3D &systemSize);
QOpenGLFramebufferObject *createFramebufferObject(const QSize &size);
void synchronize(QQuickFramebufferObject *item);
void render();
private:
QSize m_viewportSize;
QVector3D m_systemSize;
QMatrix4x4 m_projectionMatrix;
QMatrix4x4 m_modelViewMatrix;
QMatrix4x4 m_lightModelViewMatrix;
CPGLQuads *m_glQuads;
CPGLCube *m_glCube;
std::vector<atomDataType> m_positions;
std::vector<unsigned long> m_atomTypes;
bool m_skipNextFrame;
int m_syncCount;
int m_renderCount;
int m_dirtyCount;
int m_atomCount;
};
#endif // MOLECULARDYNAMICSRENDERER_H