Spec-Zone.ru › Qt 5.11

Адаптация 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 в одном потоке.

См. страницу Граф сцены для получения дополнительной информации о циклах рендеринга.

Эффекты шейдеров

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

Spec-Zone.ru

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