Пробовал сделать OpenGL-окно в Qt-5.3 по этому руководству, потом, когда ничего не получилось, стал искать, в чём разница с этим вариантом, который работает. Но особой разницы не нашёл - пробовал делать почти пустой format, как там, и наследовать окно от QOpenGLFunctions, также создавал QOpenGLPaintDevice перед тем, как начать что-либо делать с контекстом, и ресайзил его, но всё без толку. Остаётся только бездумный копипаст с удалением ненужных мне методов и проверкой, будет ли всё работать, после каждой операции. Но мне не нравится такой шаманский подход. Может, кто-нибудь увидит здесь, что не сделано перед началом инициализации функций?
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWindow>
#include <QOpenGLContext>
#include <QOpenGLFunctions>
#include "shadermanager.h"
class MainWindow : public QWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWindow *parent = 0);
    ~MainWindow();
private:
    QOpenGLContext *_context;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
MainWindow::MainWindow(QWindow *parent) :
    QWindow(parent)
{
    resize(1024,768);
    setSurfaceType(OpenGLSurface);
    QSurfaceFormat format;
    format.setDepthBufferSize(24);
    format.setSwapBehavior(QSurfaceFormat::DoubleBuffer);
    format.setMajorVersion(4);
    format.setMinorVersion(3);
    format.setSamples(16);
    format.setProfile(QSurfaceFormat::CoreProfile);
    setFormat(format);
    _context = new QOpenGLContext(this);
    _context->setFormat(format);
    _context->create();
    _context->makeCurrent(this);
    _context->functions()->initializeOpenGLFunctions(); //segmentation fault
}


