Пытаюсь нарисовать квадрат Серпинского (не суть важно) с помощью библиотеки OpenGL в Qt. Пока есть такой код:
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mywidget.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
MyWidget *widget=new MyWidget(this);
ui->horizontalSlider->setMaximum(5);
ui->horizontalSlider->setMinimum(0);
ui->horizontalSlider->setValue(0);
ui->horizontalSlider->setTickInterval(1);
ui->horizontalSlider->setTickPosition( QSlider::TicksBothSides );
QObject::connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),widget,SLOT(setFractal(int)));
}
MainWindow::~MainWindow()
{
delete ui;
}
mywidget.h
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QMainWindow>
#include <QObject>
#include <QWidget>
#include <QGLWidget>
#include <math.h>
class MyWidget: public QGLWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = 0);
void initializeGL();
void paintGL();
void drawFract(float x1, float y1, float x2, float y2, int n);
private:
int step;
public slots:
void setFractal(int f);
};
#endif // MYWIDGET_H
mywidget.cpp
#include <QtDebug>
#include "mywidget.h"
MyWidget::MyWidget(QWidget *parent):
QGLWidget(parent)
{
this->step = 1;
this->drawFract(20, 20, 460, 460, this->step);
setGeometry(0,0,500,500);
}
void MyWidget::initializeGL(){
glClearColor(0.1, 0.5, 0.2, 1);
glViewport(0,0,500,500);
}
void MyWidget::paintGL(){
glClear(GL_COLOR_BUFFER_BIT);
this->drawFract(20, 20, 460, 460, this->step);
}
void MyWidget::drawFract(float x1, float y1, float x2, float y2, int n){
if(n <= 0)
return;
float x1n = 2*x1/3 + x2 / 3,
y1n = x1/3 + 2*x2 / 3,
x2n = 2*y1/3 + y2 / 3,
y2n = y1/3+2*y2 / 3;
glLineWidth(3);
glBegin(GL_QUADS);
glColor3f(1, 1, 0);
glVertex2f(x1n, y1n);
glVertex2f(x2n, y1n);
glVertex2f(x2n, y2n);
glVertex2f(x1n, y2n);
glEnd();
drawFract(x1, y1, x1n, y1n, n-1);
drawFract(x1n, y1, x2n, y1n, n-1);
drawFract(x2n, y1, x2, y1n, n-1);
drawFract(x1, y1n, x1n, y2n, n-1);
drawFract(x2n, y1n, x2, y2n, n-1);
drawFract(x1, y2n, x1n, y2, n-1);
drawFract(x1n, y2n, x2n, y2, n-1);
drawFract(x2n, y2n, x2, y2, n-1);
}
void MyWidget::setFractal(int f){
this->step = f;
this->drawFract(20, 20, 460, 460, f);
this->updateGL();
}
Всё успешно компилируется и запускается, но ничего не прорисовывается... Подскажите пожалуйста, что я забыл/упустил или вообще, неверно написал, т.к я только начинаю осваивать OpenGL и Qt.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Xcode явных ошибок не находит, но показывает вот такие эрроры:
Как осуществить расшифровку текста с данным ключом с помощью массивов? (В "C++" 2-ой месяц)