Адаптация 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 Scene Graph.
Эффекты шейдеров
Компоненты ShaderEffect в QtQuick 2 не могут быть отображены адаптацией OpenVG. Хотя использование ShaderEffectSource и слоёв QML Item (которые оба являются внеэкранными поверхностями) возможно, применение эффектов шейдеров к ним через элемент 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.15/qtquick-visualcanvas-adaptations-openvg.html