Gem Illuminator
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros
lightrayrenderer.h
Go to the documentation of this file.
1 #ifndef LIGHTRAYRENDERER_H
2 #define LIGHTRAYRENDERER_H
3 
4 #include <QObject>
5 
6 class QOpenGLBuffer;
7 class QOpenGLFunctions;
8 class QOpenGLShaderProgram;
9 template<typename T> class QSet;
10 template<typename T> class QVector;
11 
12 class LightRay;
13 class LightRayData;
14 
18 class LightRayRenderer : public QObject
19 {
20  Q_OBJECT
21 public:
22  explicit LightRayRenderer(QObject *parent = 0);
23  virtual ~LightRayRenderer();
24 
31  void addLightRay(const LightRay &lightRay);
38  virtual void paint(QOpenGLFunctions &gl, const QMatrix4x4 &viewProjection, QOpenGLShaderProgram &shaderProgram);
42  void resetDynamicRays();
43 
44 protected:
51  void calculateVertexDataFor(const LightRayData & rayData, QVector<float> &vertices, QVector<unsigned int> & indices);
52  void updateDynamicVBO();
53  void updateStaticVBO();
54  void updateRayVBO(QOpenGLBuffer *&vertexBuffer, QOpenGLBuffer *&indexBuffer, const QSet<LightRayData> &data);
55 
56 protected:
57  QOpenGLBuffer *m_dynamicIndexBuffer;
59  QOpenGLBuffer *m_dynamicVertexBuffer;
61  QOpenGLBuffer *m_staticIndexBuffer;
63  QOpenGLBuffer *m_staticVertexBuffer;
64 };
65 
66 #endif // LIGHTRAYRENDERER_H
virtual ~LightRayRenderer()
Definition: lightrayrenderer.cpp:24
void addLightRay(const LightRay &lightRay)
Adds a new LightRay that will be rendered. Dynamic LightRays are added without checking whether they...
Definition: lightrayrenderer.cpp:34
The LightRay class describes the lightrays sent into Scene. Because LightRays are sent into Scene ri...
Definition: lightray.h:24
virtual void paint(QOpenGLFunctions &gl, const QMatrix4x4 &viewProjection, QOpenGLShaderProgram &shaderProgram)
Paints all LightRays.
Definition: lightrayrenderer.cpp:50
QOpenGLBuffer * m_dynamicVertexBuffer
Definition: lightrayrenderer.h:59
QSet< LightRayData > * m_dynamicRays
Definition: lightrayrenderer.h:58
LightRayRenderer(QObject *parent=0)
Definition: lightrayrenderer.cpp:12
QOpenGLBuffer * m_staticIndexBuffer
Definition: lightrayrenderer.h:61
void calculateVertexDataFor(const LightRayData &rayData, QVector< float > &vertices, QVector< unsigned int > &indices)
Calculates vertex data out of start and end position of a ray.
Definition: lightrayrenderer.cpp:105
Definition: lightrayrenderer.h:9
void updateStaticVBO()
Definition: lightrayrenderer.cpp:171
The LightRayRenderer packs LightRays and paints them.
Definition: lightrayrenderer.h:18
Definition: gemrenderer.h:11
bool m_isStaticVBOUpdateRequired
Definition: lightrayrenderer.h:60
The LightRayData class stores data of a LightRay. The LightRayData doesn't inherit from QObject...
Definition: lightraydata.h:13
void updateDynamicVBO()
Definition: lightrayrenderer.cpp:166
void updateRayVBO(QOpenGLBuffer *&vertexBuffer, QOpenGLBuffer *&indexBuffer, const QSet< LightRayData > &data)
Definition: lightrayrenderer.cpp:138
QSet< LightRayData > * m_staticRays
Definition: lightrayrenderer.h:62
QOpenGLBuffer * m_staticVertexBuffer
Definition: lightrayrenderer.h:63
void resetDynamicRays()
Removes all dynamic rays. It is suggested to do so every frame.
Definition: lightrayrenderer.cpp:90
QOpenGLBuffer * m_dynamicIndexBuffer
Definition: lightrayrenderer.h:57