src/gl/partrenderer.h

changeset 322
a39f454a3d7f
parent 313
c24d87f64bed
child 333
07e65a4c6611
equal deleted inserted replaced
321:180072db4a83 322:a39f454a3d7f
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 }

mercurial