Лучшее - враг....
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.
Так вот:
- Работает
- Но. Ресайз окна приложения происходит рывками и тормозами
- А если сменить QOpenGLWidget на (старый добрый) QGLWidget (ну и чуток код подправить, всякие там QOpenGLFunctions иначе резолвятся) - ресайзится начинает плавно.
- И я не одинок
- Хотя в профайлере я никаких гадостей не вижу. Просто рывки и тормоза, но низкий CPU Load
Ну это я так, на жизнь жалуюсь. Попробую рисовать не в drawBackground, а в widget-овом paintGL, вдруг лучше будет....
UPD: НЕ БУДЕТ. Даже если в OpenGL ничего вообще не делать, QGraphicsView + QOpenGLWidget - тормозят
UPD2: просто вот пример opengl/contextinfo чудовищно тормозит в такой вот ситуации:
- Создаем контекст (кнопкой Create Context)
- Ресайзим окно
- Пытаемся воспользоваться контролами (radio button, combo box) - и они ТОРМОЗЯТ.
- На маке - то же самое.
Зафайлил баг.