QGLWidget всегда имеет недопустимый контекст

У меня есть производный класс QGLWidget, но независимо от того, какой QGLFormat я пытаюсь установить, контекст возвращается как недействительный, когда я вызываю isValid().

GLWidget::GLWidget(const QGLFormat& glFormat, QWidget* parent)
:QGLWidget(glFormat, parent)
{

//basically just debug output here

}

Я создаю свой виджет так:

QGLFormat glFormat; 
glFormat.setSwapInterval(1);
glFormat.setVersion(2, 0); 
glFormat.setStencil(true);
glFormat.setStencilSize(8);
glFormat.setProfile(QGLFormat::CompatibilityProfile); 

GLWidget * glView = new GLWidget(glFormat, w); //w is the QGraphicsView 
w->setViewport(glView);

Этот код кросс-скомпилирован для Linux, и я не знаю много о самом оборудовании. Я знаю, что поддерживается сам OpenGL ES 2.0 (я это проверял), хотя я не уверен, что приведенный выше код - это то, как я генерирую контекст с OpenGL ES 2.0. РЕДАКТИРОВАТЬ: Что странно, что я могу позвонить QGLFormat::openGLVersionFlags () и это возвращает 2048 (OpenGL ES 2.0), но ссылка на класс говорит:

Определяет во время выполнения, какие версии OpenGL поддерживаются текущей платформой. Обратите внимание, что если поддерживается версия 1.5 OpenGL, ее предшественники (то есть версия 1.4 и ниже) также поддерживаются. Чтобы определить поддержку конкретной функции, такой как мульти-текстурирование, протестируйте версию, в которой эта функция была впервые представлена ​​(т. Е. Версию 1.3 в случае мульти-текстурирования), чтобы адаптироваться к максимально возможной группе платформ времени выполнения. Для этой функции необходим действующий текущий контекст OpenGL; в противном случае он вернет OpenGL_Version_None. Эта функция была введена в Qt 4.2.

То, что я хочу сделать, очень похоже на это. Я в основном хочу область просмотра, где я могу рендерить видеокадры с использованием OpenGL.

Любая помощь будет принята с благодарностью.

0 ответов

Другие вопросы по тегам