Адаптация 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.
Модуль Qt Графические эффекты
Модуль Qt Graphical Effects использует элементы ShaderEffect для рендеринга эффектов. Если вы используете графические эффекты из этого модуля, то не следует скрывать исходный элемент, чтобы исходный элемент всё ещё мог быть отрисован.
Эффекты частиц
Отрисовка эффектов частиц с помощью адаптации 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-5.13/qtquick-visualcanvas-adaptations-openvg.html