src/gl/partrenderer.h

changeset 26
3a9e761e4faa
parent 22
6da867fa5429
child 27
c57fb7a5ffa3
equal deleted inserted replaced
25:6de5ac1fb471 26:3a9e761e4faa
1 #pragma once 1 #pragma once
2 #include <QOpenGLWidget> 2 #include <QOpenGLWidget>
3 #include <QOpenGLFunctions> 3 #include <QOpenGLFunctions>
4 #include <QQuaternion> 4 #include <QQuaternion>
5 #include <QOpenGLVertexArrayObject>
6 #include <QOpenGLBuffer>
7 #include <QOpenGLShader>
8 #include <QOpenGLShaderProgram>
5 #include "main.h" 9 #include "main.h"
6 #include "gl/common.h" 10 #include "gl/common.h"
7 #include "gl/compiler.h" 11 #include "gl/compiler.h"
8 12
9 class PartRenderer : public QOpenGLWidget, protected QOpenGLFunctions 13 class PartRenderer : public QOpenGLWidget, protected QOpenGLFunctions
10 { 14 {
11 Q_OBJECT 15 Q_OBJECT
12 public: 16 public:
13 PartRenderer(Model* model, DocumentManager* documents, QWidget* parent = nullptr); 17 PartRenderer(Model* model, DocumentManager* documents, const ColorTable& colorTable, QWidget* parent = nullptr);
18 ~PartRenderer() override;
14 protected: 19 protected:
15 void initializeGL() override; 20 void initializeGL() override;
16 void resizeGL(int width, int height) override; 21 void resizeGL(int width, int height) override;
17 void paintGL() override; 22 void paintGL() override;
18 void mouseMoveEvent(QMouseEvent* event) override; 23 void mouseMoveEvent(QMouseEvent* event) override;
21 void setRenderStyle(const gl::RenderStyle newStyle); 26 void setRenderStyle(const gl::RenderStyle newStyle);
22 private: 27 private:
23 void renderScene(); 28 void renderScene();
24 Model* const model; 29 Model* const model;
25 DocumentManager* const documents; 30 DocumentManager* const documents;
31 const ColorTable& colorTable;
26 QPointF lastMousePosition; 32 QPointF lastMousePosition;
27 QQuaternion rotation; 33 QQuaternion rotation;
28 gl::Compiler* compiler; 34 gl::Compiler* compiler;
29 gl::RenderStyle renderStyle = gl::RenderStyle::Normal; 35 gl::RenderStyle renderStyle = gl::RenderStyle::Normal;
36 struct
37 {
38 QOpenGLShaderProgram* program = nullptr;
39 QOpenGLBuffer buffer{QOpenGLBuffer::VertexBuffer};
40 QOpenGLVertexArrayObject vertexArray;
41 } objects;
30 bool initialized = false; 42 bool initialized = false;
31 void initializeLighting(); 43 void initializeLighting();
44 void renderVao(const gl::ArrayClass arrayClass);
45 void checkForGLErrors();
32 }; 46 };

mercurial