Spec-Zone.ru › Qt 6.1

Изменения в Qt OpenGL

Qt 6 — результат осознанных усилий по повышению эффективности и удобства использования фреймворка.

Мы стараемся сохранять бинарную и исходную совместимость всех публичных API в каждом релизе. Но некоторые изменения были неизбежны, чтобы сделать Qt лучшим фреймворком.

В этом разделе мы подводим итоги этих изменений в Qt OpenGL и предоставляем рекомендации по их обработке.

Удаленные устаревшие классы

Модуль Qt OpenGL был устаревшим на протяжении всего жизненного цикла Qt 5, и содержащиеся в нём классы были удалены в Qt 6.

Это относится конкретно к классам, префикс которых QGL.

Перемещённые классы QOpenGL

В Qt 5 в Qt Gui был добавлен набор заменяющих классов поддержки OpenGL. Это было необходимо для поддержки OpenGL как кроссплатформенного графического API, который служил основой для графики в Qt.

В Qt 6 эти классы были перенесены в модуль Qt OpenGL. Они по-прежнему могут использоваться и полностью поддерживаются приложениями, напрямую зависящими от OpenGL. Однако они больше не считаются основополагающими, поскольку Qt был расширен для поддержки других графических API в своей основе, таких как Direct3D, Metal и Vulkan.

Существующий код приложения в значительной степени продолжит работать, но теперь должен включать Qt OpenGL в файлы проекта, а также включать заголовки, если они ранее включались косвенно через Qt Gui.

Примечание: Заметным исключением является QOpenGLContext, который по-прежнему находится в Qt Gui.

Класс QOpenGLWidgets

Ещё одним исключением является класс QOpenGLWidget. Он был перемещён в новый модуль с именем Qt OpenGL Widgets и должен включаться оттуда.

Выбор графического бэкенда OpenGL для RHI

В дополнение к корректировке файлов проекта и включению заголовков, приложение также должно вручную установить графический бэкенд OpenGL, чтобы использовать эту функциональность при работе с Qt Quick. По умолчанию Qt будет использовать наиболее подходящий графический API на целевой платформе. Дополнительные сведения см. в документации по рендерингу RHI .

Удаление ANGLE

В Windows ANGLE, сторонний переводчик OpenGL ES в Direct 3D, больше не входит в Qt 6. Это означает, что Qt::AA_UseOpenGLES и переменная окружения QT_OPENGL=angle больше не имеют никакого эффекта. В динамических сборках OpenGL автоматический возврат к ANGLE в случае неудачной инициализации OpenGL не предусмотрен. Для приложений, основанных на QWindow или QWidget и использующих OpenGL напрямую, например, через QOpenGLWidget, это означает, что OpenGL — единственный вариант во время выполнения. Однако использование чисто программной реализации OpenGL, такой как Mesa llvmpipe, поставляемая с предварительно скомпилированными пакетами Qt, по-прежнему доступно.

Для приложений Qt Quick и Qt Quick 3D Qt 6 добавляет поддержку Direct 3D 11, Vulkan и Metal, помимо OpenGL. В Windows Qt 6 по умолчанию использует Direct 3D, поэтому эффект удаления ANGLE уменьшается за счёт добавления поддержки других графических API.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/opengl-changes-qt6.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API