src/gl/partrenderer.h

changeset 376
3cef3b016330
parent 372
b2914aaeec1a
child 382
94d5587bb0c4
equal deleted inserted replaced
375:21a5ecbe34e4 376:3cef3b016330
21 glm::vec4 viewportVector; 21 glm::vec4 viewportVector;
22 glm::quat modelQuaternion; 22 glm::quat modelQuaternion;
23 glm::vec3 modelViewOrigin = {0, 0, 0}; 23 glm::vec3 modelViewOrigin = {0, 0, 0};
24 QPoint lastMousePosition; 24 QPoint lastMousePosition;
25 int totalMouseMove = 0; 25 int totalMouseMove = 0;
26 gl::RenderPreferences renderPreferences;
27 double zoom = 1.0; 26 double zoom = 1.0;
28 bool initialized = false; 27 bool initialized = false;
29 bool needBuild = true; 28 bool needBuild = true;
30 std::vector<RenderLayer*> activeRenderLayers; 29 std::vector<RenderLayer*> activeRenderLayers;
31 std::vector<RenderLayer*> inactiveRenderLayers; 30 std::vector<RenderLayer*> inactiveRenderLayers;
32 std::chrono::time_point<std::chrono::steady_clock> lastClickTime; 31 std::chrono::time_point<std::chrono::steady_clock> lastClickTime;
33 bool frozen = false; 32 bool frozen = false;
34 public: 33 public:
34 static const gl::RenderPreferences default_render_preferences;
35 static const gl::build_preferences default_build_preferences;
36 const gl::RenderPreferences* render_preferences = &PartRenderer::default_render_preferences;
37 const gl::build_preferences* build_preferences = &PartRenderer::default_build_preferences;
35 PartRenderer( 38 PartRenderer(
36 QTextDocument* model, 39 QTextDocument* model,
37 DocumentManager* documents, 40 DocumentManager* documents,
38 const ColorTable& colorTable, 41 const ColorTable& colorTable,
39 QWidget* parent = nullptr); 42 QWidget* parent = nullptr);
40 ~PartRenderer() override; 43 ~PartRenderer() override;
41 void setRenderPreferences(const gl::RenderPreferences& newPreferences);
42 ModelId getHighlightedObject() const; 44 ModelId getHighlightedObject() const;
43 void addRenderLayer(RenderLayer* layer); 45 void addRenderLayer(RenderLayer* layer);
44 void setLayerEnabled(RenderLayer* layer, bool enabled); 46 void setLayerEnabled(RenderLayer* layer, bool enabled);
45 std::optional<glm::vec3> screenToModelCoordinates(const QPointF& point, const Plane& plane) const; 47 std::optional<glm::vec3> screenToModelCoordinates(const QPointF& point, const Plane& plane) const;
46 QPointF modelToScreenCoordinates(const glm::vec3& point) const; 48 QPointF modelToScreenCoordinates(const glm::vec3& point) const;
48 std::int32_t pick(QPoint where); 50 std::int32_t pick(QPoint where);
49 void setSelection(const QSet<std::int32_t>& selectedIds); 51 void setSelection(const QSet<std::int32_t>& selectedIds);
50 glm::vec3 cameraVector(const QPointF& point) const; 52 glm::vec3 cameraVector(const QPointF& point) const;
51 Line<3> cameraLine(const QPointF& point) const; 53 Line<3> cameraLine(const QPointF& point) const;
52 Q_SLOT void setModelViewOrigin(const glm::vec3& newViewOrigin); 54 Q_SLOT void setModelViewOrigin(const glm::vec3& newViewOrigin);
55 Q_SLOT void build();
53 Q_SIGNALS: 56 Q_SIGNALS:
54 void projectionMatrixChanged(const glm::mat4& newMatrix); 57 void projectionMatrixChanged(const glm::mat4& newMatrix);
55 void modelMatrixChanged(const glm::mat4& newMatrix); 58 void modelMatrixChanged(const glm::mat4& newMatrix);
56 void viewMatrixChanged(const glm::mat4& newMatrix); 59 void viewMatrixChanged(const glm::mat4& newMatrix);
57 void renderPreferencesChanged();
58 void message(const Message& message); 60 void message(const Message& message);
59 private: 61 private:
60 void initializeGL() override; 62 void initializeGL() override;
61 void resizeGL(int width, int height) override; 63 void resizeGL(int width, int height) override;
62 void paintGL() override; 64 void paintGL() override;
68 glm::vec3 unproject(const glm::vec3& win) const; 70 glm::vec3 unproject(const glm::vec3& win) const;
69 void setFragmentStyle(gl::FragmentStyle fragStyle); 71 void setFragmentStyle(gl::FragmentStyle fragStyle);
70 void renderScene(); 72 void renderScene();
71 void updateViewMatrix(); 73 void updateViewMatrix();
72 void updateModelMatrix(); 74 void updateModelMatrix();
73 Q_SLOT void build();
74 void renderVao(const gl::ArrayClass arrayClass, const GLenum glType); 75 void renderVao(const gl::ArrayClass arrayClass, const GLenum glType);
75 template<gl::ArrayClass arrayClass> 76 template<gl::ArrayClass arrayClass>
76 void renderVao(); 77 void renderVao();
77 void checkForGLErrors(); 78 void checkForGLErrors();
78 }; 79 };

mercurial