Адаптация 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 для отправки команд и данных на векторную графическую процессорную систему, которая рендерит граф сцены ускоренным способом, освобождая процессор от работы с графикой. Многие операции, такие как отрисовка прямоугольников и глифов шрифтов, подходят для OpenVG, поскольку они могут быть представлены в виде путей, которые обводятся и заливаются. Рендеринг элементов графа сцены, которые обычно включают текстуры, обрабатывается рендерером OpenVG с помощью VGImage. Кроме того, когда вы рендерите на внеэкранные поверхности (например, с помощью слоев), поддерево сцены рендерится в VGImage, который может быть повторно использован в сцене.
Цикл рендеринга
Рендерер OpenVG отражает поведение основного цикла рендеринга и выполняет все команды OpenVG в одном потоке.
Дополнительную информацию о циклах рендеринга см. в разделе Qt Quick Scene Graph.
Эффекты шейдеров
Компоненты ShaderEffect в QtQuick 2 не могут быть отображены адаптацией OpenVG. Хотя использование ShaderEffectSource и QML слоёв элементов (оба являются внеэкранными поверхностями) возможно, применение эффектов шейдеров к ним через элемент ShaderEffect невозможно. Это связано с тем, что OpenVG не имеет API для применения операций шейдеров по вершинам и фрагментам. Однако вы можете воспользоваться операциями фильтра изображений в API OpenVG, чтобы получить эффекты, аналогичные тем, которые предоставляет ShaderEffects в пользовательских элементах. Для интеграции пользовательского рендеринга OpenVG используйте QSGRenderNode в сочетании с QSGRendererInterface.
Модуль Qt Graphical Effects
Модуль 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.12/qtquick-visualcanvas-adaptations-openvg.html