Я пытаюсь использовать OpenGL внутри Qt с помощью QOpenGLWidget, но мне трудно найти подходящие примеры. Я новичок в OpenGL, поэтому я пытаюсь научиться его использовать, но, как я узнал, в QOpenGLWidget, похоже, не очень хорошо применяются. Прямо сейчас, все, что я хочу сделать, это сделать треугольник, чтобы начать.Как визуализировать треугольник в QOpenGLWidget?
Вот что у меня есть.
Заголовок:
namespace Ui {
class Widget;
}
class Widget : public QOpenGLWidget, protected QOpenGLFunctions
{
public:
explicit Widget(QWidget *parent = 0);
~Widget();
protected:
void initializeGL();
void resizeGL(int, int);
void paintGL();
private:
Ui::Widget *ui;
};
Класс:
Widget::Widget(QWidget *parent) :
QOpenGLWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
void Widget::initializeGL()
{
// Set up the rendering context, load shaders and other resources, etc.:
initializeOpenGLFunctions();
glClearColor(0.1f, 0.1f, 0.1f, 1.0f);
}
void Widget::resizeGL(int w, int h)
{
// Update projection matrix and other size-related settings:
}
void Widget::paintGL()
{
// Draw the scene:
glClear(GL_COLOR_BUFFER_BIT);
}
Widget::~Widget()
{
delete ui;
}
Есть ли пример, который я мог бы использовать, чтобы просто вынести базовый треугольник? Я попробовал один отсюда: https://www.khronos.org/assets/uploads/books/openglr_es_20_programming_guide_sample.pdf, но он бросил много ошибок, которые я не мог решить.
Я также не знаю, как контексты OpenGL работают в QOpenGLWidget.
* EDIT: Получается, что примеры были отдельным пакетом на моем дистрибутиве (Arch Linux). Я смог установить их, и, похоже, есть много возможностей для начала.
Благодарим за помощь!
Вы пробовали изучать примеры GL (ES), которые поставляются вместе с Qt? В QOpenGLWidget нет ничего особенного. – peppe
Где я могу найти эти примеры? – inefarius
Они поставляются с Qt. Раздел OpenGL. http://doc.qt.io/qt-5/examples-widgets-opengl.html – peppe