ProjectedTextures
Prototype software for spacial augmented reality applications.
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros
RenderBase.h
Go to the documentation of this file.
1 #ifndef RENDERBASE_H
2 #define RENDERBASE_H
3 
4 #include <QOpenGLShaderProgram>
5 #include <QOpenGLVertexArrayObject>
6 #include <QOpenGLBuffer>
7 #include <QOpenGLFunctions>
8 #include <QGLWidget>
9 #include "Geometry.h"
10 #include "RenderEnums.h"
11 #include "ShaderManager.h"
12 
16 struct RenderObject{
18  QOpenGLVertexArrayObject* vao;
19  QOpenGLBuffer* positionBuffer;
20  QOpenGLBuffer* normalBuffer;
21  QVector<QOpenGLBuffer*> vertexColorBuffers;
23  QOpenGLBuffer* indexBuffer;
24 };
25 
31 class RenderBase :
32  public QGLWidget,
33  protected QOpenGLFunctions
34 {
35  Q_OBJECT
36 
37 public:
42  RenderBase(ShaderManager* shaderManager, QList<Geometry*>* geometries, QWidget* parent = 0);
43  virtual ~RenderBase(void);
44 
45  //to set new geometry at runtime (not working)
46  //void setGeometries(QList<Geometry*>* geometries);
47 
48 
49 protected:
52  QList<RenderObject> renderList;
53  QList<Geometry*>* geometries;
56  void initRenderList();
57  void destroyRenderList();
59  virtual void initializeGL(){}
60  virtual void paintGL(){}
61  virtual void resizeGL(){}
62 
63 public slots:
64  void setRenderingEnabled(bool enable){renderingEnabled = enable;}
65 };
66 
67 #endif //RENDERBASE_H