Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Kurpi от Ноябрь 27, 2011, 20:31



Название: QGLContext получается невалидным.
Отправлено: Kurpi от Ноябрь 27, 2011, 20:31
Попробовал инициализировать opengl 3 окно с помощью Qt.
oglwindow.cpp
Код:
#include "oglwindow.h"

OGLWindow::OGLWindow(QWidget *parent) :
    QGLWidget(parent)
{
}
void OGLWindow::initializeGL()
{
    QGLFormat fm;
    fm.setAlpha(true);
    fm.setDoubleBuffer(true);
    fm.setProfile(QGLFormat::CoreProfile);
    fm.setVersion(3,3);
    fm.setSampleBuffers(true);
    fm.setAccum(true);
    fm.setDepth(true);
    fm.setDirectRendering(true);
    QGLContext *con = new QGLContext(fm);
    con->create();
    con->makeCurrent();
}
void OGLWindow::keyPressEvent(QKeyEvent *key)
{

}
void OGLWindow::resizeGL(int w, int h)
{

}
void OGLWindow::paintGL()
{

}
oglwindow.h:
Код:
#ifndef OGLWINDOW_H
#define OGLWINDOW_H
#include <QMainWindow>
#include <QKeyEvent>
#include <QtOpenGL>

class OGLWindow : public QGLWidget
{
    Q_OBJECT

public:
    OGLWindow(QWidget *parent = 0);
    void keyPressEvent(QKeyEvent *key);
    void initializeGL();
    void resizeGL(int w, int h);
    void paintGL();

private slots:

private:

};
#endif // OGLWINDOW_H

main.cpp:
Код:
#include <QtGui/QApplication>
#include "oglwindow.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    OGLWindow w;
    w.show();

    return a.exec();
}
При каждом запуске выводится сообщение "QGLContext::makeCurrent(): Cannot make invalid context current". Понятно, что причин м.б. вагон и маленькая тележка, но до того с SDL нормально работало. Здесь показалось, что сделано проще, но, видимо, что-то забыл сделать. Формат пробовал полностью оставлять пустым, но ничего не менялось. Или нужно сначала имплементировать resizeGL и вызвать его перед show?