Spec-Zone.ru › Qt 6.0

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

Адаптация OpenVG — это альтернативный рендерер для Qt Quick 2, который отрисовывает содержимое графа сцены с помощью команд OpenVG, обеспечивая аппаратное ускорение 2D векторной и растровой графики. Как и в случае с адаптацией Software Adaptation, некоторые функции и оптимизации больше недоступны. Большинство приложений 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 (которые оба являются внеэкранными поверхностями), нельзя применять эффекты шейдеров к ним через элемент 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.0/qtquick-visualcanvas-adaptations-openvg.html

Spec-Zone.ru

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