Spec-Zone.ru › Qt 5.9

Адаптация 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, чтобы получить аналогичные эффекты, предоставляемые эффектами 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.9/qtquick-visualcanvas-adaptations-openvg.html

Spec-Zone.ru

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