Попробовал инициализировать 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?