Адаптация 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 слоев элементов (которые оба являются внеэкранными поверхностями), невозможно применять эффекты шейдеров к ним через элемент 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.2/qtquick-visualcanvas-adaptations-openvg.html