ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
line_painter.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include <QtCore>
11 #include <QtOpenGL>
12 
13 #include "ui/point_painter.h"
14 
15 namespace colmap {
16 
17 class LinePainter {
18 public:
19  LinePainter();
20  ~LinePainter();
21 
22  struct Data {
23  Data() {}
25  : point1(p1), point2(p2) {}
26 
29  };
30 
31  void Setup();
32  void Upload(const std::vector<LinePainter::Data>& data);
33  void Render(const QMatrix4x4& pmv_matrix,
34  const int width,
35  const int height,
36  const float line_width);
37 
38 private:
39  QOpenGLShaderProgram shader_program_;
40  QOpenGLVertexArrayObject vao_;
41  QOpenGLBuffer vbo_;
42 
43  size_t num_geoms_;
44 };
45 
46 } // namespace colmap
int width
int height
void Render(const QMatrix4x4 &pmv_matrix, const int width, const int height, const float line_width)
void Upload(const std::vector< LinePainter::Data > &data)
Definition: line_painter.cc:70
GraphType data
Definition: graph_cut.cc:138
Data(const PointPainter::Data &p1, const PointPainter::Data &p2)
Definition: line_painter.h:24
PointPainter::Data point2
Definition: line_painter.h:28
PointPainter::Data point1
Definition: line_painter.h:27