Лучшее - враг....

After Qt 5.3’s introduction of QQuickWidget, Qt 5.4 adds QOpenGLWidget, the long-awaited replacement for the legacy QGLWidget.

Писали нам в Qt Weekly три года назад.

Я тогда попробовал, но Qt 5.4 глючила на маке (уже не помню даже в каком месте), держать две ветки кода было не с руки, так и используем legacy QGLWidget в FRV.

Прошло три года и руки дошли попробовать еще раз, уже в Qt 5.6. Такой вот бутерброд (если вкратце):

QGraphicsView *v;.... v->setViewport(new QOpenGLWidget(..);

А затем в QGraphicsScene::drawBackground() рисую нечто (в тестовом случае - адын цветной треугольник). Все как в примере boxes из Qt.

Так вот:

  1. Работает
  2. Но. Ресайз окна приложения происходит рывками и тормозами
  3. А если сменить QOpenGLWidget на (старый добрый) QGLWidget (ну и чуток код подправить, всякие там QOpenGLFunctions иначе резолвятся) - ресайзится начинает плавно.
  4. И я не одинок
  5. Хотя в профайлере я никаких гадостей не вижу. Просто рывки и тормоза, но низкий CPU Load

Ну это я так, на жизнь жалуюсь. Попробую рисовать не в drawBackground, а в widget-овом paintGL, вдруг лучше будет....

UPD: НЕ БУДЕТ. Даже если в OpenGL ничего вообще не делать, QGraphicsView + QOpenGLWidget - тормозят

UPD2: просто вот пример opengl/contextinfo чудовищно тормозит в такой вот ситуации:

  • Создаем контекст (кнопкой Create Context)
  • Ресайзим окно
  • Пытаемся воспользоваться контролами (radio button, combo box) - и они ТОРМОЗЯТ.
  • На маке - то же самое.

Зафайлил баг.