Адаптации графа сцены
Адаптации графа сцены в Qt Quick
Изначально Qt Quick всегда полагался на OpenGL (OpenGL ES 2.0 или OpenGL 2.0) для разбора графа сцены и рендеринга результатов на целевой области рендеринга
Начиная с Qt 5.8, Qt Quick также поддерживает рендеринг в программном обеспечении с использованием OpenVG и Direct3D 12. Это реализуется с помощью дополнительных адаптаций графа сцены, либо в виде плагинов (d3d12, openvg), либо встроенных в библиотеку Qt Quick (программное обеспечение). По умолчанию адаптация по-прежнему напрямую полагается на OpenGL.
Начиная с Qt 5.14, адаптация по умолчанию получает возможность рендеринга с помощью уровня абстракции графики — интерфейса аппаратного обеспечения для рендеринга Qt (RHI), предоставляемого модулем QtGui. При включенном режиме прямые вызовы OpenGL не выполняются. Вместо этого граф сцены выполняет рендеринг с использованием API, предоставляемых уровнем абстракции, который затем преобразуется в вызовы OpenGL, Vulkan, Metal или Direct 3D. Обработка шейдеров также унифицирована путем написания кода шейдеров один раз, компиляции в SPIR-V и последующего преобразования в язык, соответствующий различным API графических устройств.
Переключение между адаптациями в вашем приложении
В отличие от software или d3d12, рендерер на основе RHI не является дополнительной адаптацией и всегда встроен. Начиная с Qt 5.14, он может быть включен путем установки переменной окружения QSG_RHI в ненулевое значение перед запуском приложения или с помощью QQuickWindow::setSceneGraphBackend() в сочетании с QSGRendererInterface::GraphicsApi. Если ничего из этого не сделано, OpenGL используется напрямую, как и в предыдущих версиях.
Переключение на другую адаптацию можно осуществить двумя способами:
- Использование переменной среды — Установите переменную окружения
QT_QUICK_BACKENDили устаревшую переменную окруженияQMLSCENE_DEVICEперед запуском приложения. - Использование API C++ — Вызовите QQuickWindow::setSceneGraphBackend() на ранней стадии функции main() приложения.
Поддерживаются следующие бэкэнды:
- По умолчанию — Запрос со строкой
""или значением перечисления QSGRendererInterface::GraphicsApi, отличным от перечисленных ниже. - Программное обеспечение — Запрос со строкой
"software"или значением перечисления QSGRendererInterface::Software. - Direct3D 12 — Запрос со строкой
"d3d12"или значением перечисления QSGRendererInterface::Direct3D12. -
OpenVG — Запрос со строкой
"openvg"или значением перечисления QSGRendererInterface::OpenVG.
Чтобы узнать, какой бэкэнд используется, вы можете включить протоколирование базовой информации о графе сцены с помощью переменной среды QSG_INFO или категории протоколирования qt.scenegraph.general. В результате на вывод отладки во время запуска приложения будет выводиться некоторая информация.
Примечание: В сборках Qt с отключенным OpenGL адаптация по умолчанию — software. Это может измениться в будущих выпусках.
Примечание: Обычно адаптации, отличные от стандартной, имеют ряд ограничений, так как они вряд ли предоставят функциональные возможности, которые будут на 100% совместимы с OpenGL. Однако эти адаптации могут предоставлять свои собственные преимущества в определенных областях. Для получения более подробной информации о различных адаптациях см. разделы ниже.
Адаптация по умолчанию
При непосредственном использовании OpenGL адаптация по умолчанию способна предоставить полный набор функций Qt Quick 2. Дополнительные сведения см. в разделе Адаптация по умолчанию.
При использовании OpenGL, Vulkan, Metal или Direct 3D через RHI, адаптация по умолчанию способна предоставить большинство функций, включая полный рендерер пакетов, описанный в Адаптация по умолчанию, но некоторые дополнительные функции могут быть недоступны на Qt 5.14.
Адаптация программного обеспечения
Адаптация программного обеспечения — это альтернативный рендерер для Qt Quick 2, который использует движок растровой отрисовки для рендеринга содержимого графа сцены. Дополнительные сведения см. в разделе Адаптация программного обеспечения.
Direct3D 12 (экспериментальная)
Адаптация Direct3D 12 — это альтернативный рендерер для Qt Quick 2 при работе в Windows 10, как для приложений Win32, так и для приложений UWP. Дополнительные сведения см. в разделе Адаптация Direct3D 12.
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-5.14/qtquick-visualcanvas-adaptations.html