70 void updateModelMatrix(); |
70 void updateModelMatrix(); |
71 Q_SLOT void build(); |
71 Q_SLOT void build(); |
72 void renderVao(const gl::ArrayClass arrayClass); |
72 void renderVao(const gl::ArrayClass arrayClass); |
73 void checkForGLErrors(); |
73 void checkForGLErrors(); |
74 }; |
74 }; |
|
75 |
|
76 inline QVector<QPointF> convertWorldPointsToScreenPoints( |
|
77 const std::vector<glm::vec3> &worldPoints, |
|
78 const PartRenderer* renderer) |
|
79 { |
|
80 QVector<QPointF> points2d; |
|
81 points2d.reserve(static_cast<int>(worldPoints.size())); |
|
82 for (const glm::vec3& point : worldPoints) |
|
83 { |
|
84 points2d.push_back(renderer->modelToScreenCoordinates(point)); |
|
85 } |
|
86 return points2d; |
|
87 } |
|
88 |
|
89 inline Winding worldPolygonWinding( |
|
90 const std::vector<glm::vec3> &points, |
|
91 const PartRenderer* renderer) |
|
92 { |
|
93 return winding(QPolygonF{convertWorldPointsToScreenPoints(points, renderer)}); |
|
94 } |
|
95 |
|
96 inline void drawWorldPoint( |
|
97 QPainter* painter, |
|
98 const glm::vec3& worldPoint, |
|
99 const PartRenderer* renderer) |
|
100 { |
|
101 const QPointF center = renderer->modelToScreenCoordinates(worldPoint); |
|
102 painter->drawEllipse(inscribe(CircleF{center, 5})); |
|
103 } |
|
104 |
|
105 inline void drawWorldPolyline( |
|
106 QPainter *painter, |
|
107 const std::vector<glm::vec3> &points, |
|
108 const PartRenderer* renderer) |
|
109 { |
|
110 painter->drawPolyline(QPolygonF{convertWorldPointsToScreenPoints(points, renderer)}); |
|
111 } |
|
112 |
|
113 inline void drawWorldPolygon( |
|
114 QPainter* painter, |
|
115 const std::vector<glm::vec3> &points, |
|
116 const PartRenderer* renderer) |
|
117 { |
|
118 painter->drawPolygon(QPolygonF{convertWorldPointsToScreenPoints(points, renderer)}); |
|
119 } |