1 #ifndef GEMRENDERERNEW_H
2 #define GEMRENDERERNEW_H
4 template<
typename Key,
typename T>
class QHash;
5 template<
typename T>
class QList;
8 class QOpenGLFunctions;
9 class QOpenGLShaderProgram;
42 void setData(
const GemData &data);
53 void setIndex(
int index);
59 int numberOfVertices();
87 void cleanup(QOpenGLFunctions &gl);
99 void paint(QOpenGLFunctions &gl, QOpenGLShaderProgram &program);
107 void addOrUpdateGem(GemDataInfo *gem, QOpenGLFunctions &gl);
112 void setVerticesPerGem(
int numberOfVertices);
122 void setFloatTexturesEnabled(
bool enable);
128 void appendAttributesToVector(GemDataInfo *gem,
QVector<float> &vector);
144 void addGem(GemDataInfo *gem, QOpenGLFunctions &gl);
150 void updateGem(GemDataInfo *gem, QOpenGLFunctions &gl);
154 int m_allocatedAndUsedGems;
156 unsigned int m_dataBuffer;
158 bool m_hasErrorOccured;
160 unsigned int m_lowestUnusedIndex;
161 int m_maxTextureSize;
164 QOpenGLBuffer *m_vertexBuffer;
165 int m_verticesPerGem;
177 void cleanup(QOpenGLFunctions &gl);
188 void paint(QOpenGLFunctions &gl, QOpenGLShaderProgram &program);
219 #endif // GEMRENDERERNEW_H
bool m_isGemBufferUpdateRequired
Definition: gemrenderer.h:212
GemType
An enum describing current gem type. This enum is used for faster comparision of gems, because all gems of one type have same (objectspace) vertices.
Definition: abstractgem.h:22
bool m_isInitialized
Definition: gemrenderer.h:214
void cleanup(QOpenGLFunctions &gl)
Cleans up all gpu resources.
Definition: gemrenderer.cpp:44
QHash< GemType, GemRenderData * > * m_gemBuffersTex
Definition: gemrenderer.h:210
The GemData class stores all required information to describe an AbstractGem. The advantage of GemDa...
Definition: gemdata.h:20
QList< GemDataInfo * > * m_newGems
Definition: gemrenderer.h:215
GemRenderer()
Definition: gemrenderer.cpp:24
void initialize(QOpenGLFunctions &gl)
Initializes all gpu resources.
Definition: gemrenderer.cpp:87
~GemRenderer()
Definition: gemrenderer.cpp:36
void paint(QOpenGLFunctions &gl, QOpenGLShaderProgram &program)
paint Paints all gems using faked instanced drawing.
Definition: gemrenderer.cpp:51
void setSceneExtent(float extent)
Sets the scene extent, which is required to encode gem positions into byte textures.
Definition: gemrenderer.cpp:65
QHash< AbstractGem *, GemDataInfo * > * m_gemMap
Definition: gemrenderer.h:211
bool m_areFloatTexturesAvailable
Definition: gemrenderer.h:209
void updateGem(AbstractGem *gem)
Save given gem in order to update it later.
Definition: gemrenderer.cpp:71
The GemRenderer class renders all of our gems. For performance reasons the GemRenderer packs all gem...
Definition: gemrenderer.h:21
Definition: gemrenderer.h:11
float m_sceneExtent
Definition: gemrenderer.h:216
Definition: gemrenderer.h:4
The AbstractGem class is the base class of all gems. As base class all required information of a gem...
Definition: abstractgem.h:39
bool m_isGemDataBufferInvalid
Definition: gemrenderer.h:213
void updateData(QOpenGLFunctions &gl)
Updates previous added gem using updateGem()
Definition: gemrenderer.cpp:117