Адаптации графического дерева сцены
Адаптации графического дерева сцены в Qt Quick
В Qt 5.0 Qt Quick всегда полагался на OpenGL (OpenGL ES 2.0 или OpenGL 2.0) для анализа графического дерева сцены и отрисовки результатов на целевой области.
Начиная с Qt 5.8, Qt Quick также поддерживает отрисовку в программном обеспечении и с помощью OpenVG. Это достигается за счёт дополнительных адаптаций графического дерева сцены, представленных в виде плагинов (openvg) или встроенных в библиотеку Qt Quick (программное обеспечение). По умолчанию адаптация продолжает работать непосредственно с OpenGL.
Начиная с Qt 5.14, адаптация по умолчанию получает возможность отрисовки с помощью графического абстрактного слоя, интерфейса графического оборудования Qt (RHI), предоставляемого модулем QtGui. При включенном режиме не производится прямых вызовов OpenGL. Вместо этого графическое дерево сцены рисуется с помощью API, предоставляемых абстрактным слоем, которые затем переводятся в вызовы OpenGL, Vulkan, Metal или Direct 3D. Обработка шейдеров также унифицирована путем написания кода шейдеров один раз, компиляции в SPIR-V и последующего перевода в язык, соответствующий различным графическим API.
Начиная с Qt 6.0, модель отрисовки на основе RHI является по умолчанию, и нет возможности вернуться к прямому использованию OpenGL.
Переключение между адаптациями в вашем приложении
В отличие от software, рендерер на основе RHI не является дополнительной адаптацией и всегда встроен. Начиная с Qt 6.0 он всегда включен. На платформах, где доступны несколько графических API, графическое дерево выбирает платформенно-специфический вариант. Если это нежелательно, приложения могут принудительно выбрать определённый графический API, установив переменную среды QSG_RHI_BACKEND или через QQuickWindow::setGraphicsApi() в сочетании с QSGRendererInterface::GraphicsApi.
Переключение на другую адаптацию можно выполнить двумя способами:
- Использование переменной среды — Установите переменную среды
QT_QUICK_BACKENDили устаревшую переменную средыQMLSCENE_DEVICEперед запуском приложения. - Использование API C++ — Вызовите QQuickWindow::setSceneGraphBackend() на ранней стадии функции main() приложения.
Поддерживаются следующие бэкэнды:
- По умолчанию — Запрос со строкой
"rhi"или значением перечисления QSGRendererInterface::GraphicsApi, отличным от перечисленных ниже. - Программное обеспечение — Запрос со строкой
"software"или значением перечисления QSGRendererInterface::Software. -
OpenVG — Запрос со строкой
"openvg"или значением перечисления QSGRendererInterface::OpenVG.
Чтобы узнать, какой бэкэнд используется, можно включить протоколирование базовой информации о графическом дереве сцены, используя переменную среды QSG_INFO или категорию протоколирования qt.scenegraph.general. В результате, во время запуска приложения, некоторые сведения будут выведены в вывод отладки.
Примечание: В сборках Qt, в которых отключены как OpenGL, так и Vulkan, адаптация по умолчанию — software. Однако это не относится к Windows или macOS, так как на этих платформах всегда поддерживаются Direct 3D или Metal соответственно.
Примечание: Обычно адаптации, отличные от стандартной, имеют ряд ограничений, так как маловероятно, что они обеспечат функциональность, полностью совместимую с OpenGL. Тем не менее, эти адаптации могут предоставить свои специфические преимущества в определённых областях. Для получения дополнительной информации о различных адаптациях см. разделы ниже.
Адаптация по умолчанию
При прямом использовании OpenGL адаптация по умолчанию способна предоставить весь функционал Qt Quick 2. Более подробную информацию см. в Адаптация по умолчанию.
Адаптация для программного обеспечения
Адаптация для программного обеспечения — это альтернативный рендерер для Qt Quick 2, который использует движок растровой отрисовки для отрисовки содержимого графического дерева сцены. Более подробную информацию см. в Адаптации для программного обеспечения.
OpenVG
Адаптация OpenVG — это альтернативный рендерер для Qt Quick 2, который отрисовывает содержимое графического дерева сцены с помощью команд OpenVG для обеспечения ускоренной аппаратной 2D-векторной и растровой графики. Более подробную информацию см. в Адаптации OpenVG.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qtquick-visualcanvas-adaptations.html