Spec-Zone.ru › Qt 6.1

Адаптация Qt Quick OpenVG

Адаптация OpenVG — это альтернативный рендерер для Qt Quick 2, который отображает содержимое графа сцены с использованием команд OpenVG для обеспечения ускорения 2D векторной и растровой графики на аппаратном уровне. Как и адаптация для программного обеспечения, некоторые функции и оптимизации больше недоступны. Большинство приложений Qt Quick 2 будут работать без изменений, хотя любые попытки использования недоступных функций будут игнорироваться.

Требование EGL

В отличие от стандартного OpenGL рендерера, встроенной поддержки для получения контекста OpenVG нет. Это означает, что рендерер отвечает за запрос и управление текущим контекстом. Для этого вы используете EGL напрямую в рендерере OpenVG. Следовательно, рендерер OpenVG может быть использован только с платформными плагинами, которые поддерживают создание QWindows с поддержкой QSurfaceFormat::OpenVG. Из этого окна рендерер может получить EGLSurface, который затем может быть использован с EGLContext для отрисовки содержимого OpenVG.

Рендерер

Рендерер OpenVG использует API OpenVG для отправки команд и данных на векторный GPU, который ускоренно отображает граф сцены, снимая нагрузку по отрисовке графики с процессора. Многие операции, такие как отрисовка прямоугольников и глифов шрифтов, идеально подходят для OpenVG, потому что они могут быть представлены в виде контуров, которые затем обводятся и заливаются. Отрисовка элементов графа сцены, которые обычно включают текстуры, обрабатывается рендерером OpenVG с использованием VGImage. Кроме того, когда вы рисуете на внеэкранных поверхностях (например, с помощью слоёв), поддерево сцены рисуется в VGImage, который может быть повторно использован в сцене.

Цикл рендеринга

Рендерер OpenVG отражает поведение базового цикла рендеринга и выполняет все команды OpenVG в одном потоке.

Для получения дополнительной информации о циклах рендеринга см. Граф сцены Qt Quick.

Эффекты шейдеров

Компоненты ShaderEffect в QtQuick 2 не могут быть отрисованы адаптацией OpenVG. Хотя можно использовать ShaderEffectSource и слои QML Item (которые оба являются внеэкранными поверхностями), невозможно применять эффекты шейдеров к ним через элемент ShaderEffect. Это связано с тем, что OpenVG не имеет API для применения операций шейдеров по вершинам и фрагментам. Однако вы можете использовать операции фильтра изображений в API OpenVG для получения эффектов, аналогичных тем, которые предоставляет ShaderEffects в пользовательских элементах. Для интеграции пользовательской отрисовки OpenVG используйте QSGRenderNode в сочетании с QSGRendererInterface.

Эффекты частиц

Отрисовка эффектов частиц с адаптацией OpenVG невозможна. Всякий раз, когда это возможно, удаляйте частицы полностью из сцены. В противном случае они всё равно будут требовать обработки, даже если не видны.

Отрисовка текста

Отрисовка текста с адаптацией OpenVG основана на отрисовке контуров глифов и не использует метод дистанционных полей, в отличие от бэкенда OpenGL.

Преобразования перспективы

API OpenVG не позволяет преобразовывать контуры с неаффинными преобразованиями, но это возможно в Qt Quick. Следовательно, при отрисовке компонентов с использованием контуров, таких как прямоугольники и текст, при применении преобразований перспективы, бэкенд OpenVG сначала рисует на VGImage, а затем применяет преобразования. Это поведение использует больше памяти во время выполнения и занимает больше времени; избегайте этого, если это возможно.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qtquick-visualcanvas-adaptations-openvg.html

Spec-Zone.ru

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