У меня есть производный класс 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.
Любая помощь будет принята с благодарностью.
Задача ещё не решена.
Других решений пока нет …