Spec-Zone.ru › Qt 5.14

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 (которые являются невидимыми поверхностями), невозможно применить эффекты шейдеров к ним через элемент ShaderEffect. Это связано с тем, что OpenVG не имеет API для применения операций шейдера на вершину и на фрагмент. Однако вы можете использовать операции фильтрации изображений в API OpenVG, чтобы получить эффекты, похожие на те, которые предоставляют ShaderEffects в пользовательских элементах. Для интеграции пользовательской отрисовки OpenVG используйте QSGRenderNode в сочетании с QSGRendererInterface.

Модуль графических эффектов Qt

Графические эффекты Qt используют элементы 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.14/qtquick-visualcanvas-adaptations-openvg.html

Spec-Zone.ru

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