class MainWidget : public QOpenGLWidget
{
public:
MainWidget(QWidget *parent = nullptr);
~MainWidget();
void initializeGL();
void resizeGL(int w, int h);
void paintGL();
int vertex_counter = -1;
int index_counter = -1;
int *indexx;
double *vertexx;
};
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
public slots:
void update();
};
Elements - это структура с 2мя массивами и 2мя обычными интами.
И есть вот такие функции:
void Widget::update()
{
Elements elements;
myMain(&elements);
ui->label->clear();
ui->openGLWidget->vertex_counter = elements.vertex_counter;
ui->openGLWidget->index_counter = elements.index_counter;
ui->openGLWidget->indexx = elements.index;
ui->openGLWidget->vertexx = elements.vertex;
ui->openGLWidget->update();
free(elements.vertex);
free(elements.index);
}
void MainWidget::paintGL() {
if (index_counter == -1) {
} else {
Elements elements;
myMain(&elements);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glVertexPointer(3, GL_DOUBLE, 0, elements.vertex);
glEnableClientState(GL_VERTEX_ARRAY);
int edges_counter = elements.index_counter*2;
glColor3d(40, 40, 20);
glDrawElements(GL_LINES, edges_counter, GL_UNSIGNED_INT, elements.index);
glRotatef(10, 0, 1, 0);
glRotatef(10, 1, 0, 0);
glDisableClientState(GL_VERTEX_ARRAY);
}
}