Qt Quick OpenVG 适配

OpenVG 适配是一种替代渲染器,用于 Qt Quick2 的替代渲染器,它使用 OpenVG 命令渲染场景图的内容,提供硬件加速的二维矢量和光栅图形。与软件适配一样,某些功能和优化不再可用。大多数Qt Quick 2 应用程序无需修改即可运行,但任何使用不支持功能的尝试都将被忽略。

EGL 要求

与默认的 OpenGL 渲染器不同,该渲染器没有获取 OpenVG 上下文的内置支持。这意味着渲染器需要负责请求和管理当前上下文。为此,需要在 OpenVG 渲染器中直接使用 EGL。因此,OpenVG 渲染器只能与支持创建 QWindows(支持QSurfaceFormat::OpenVG )的平台插件一起使用。从该窗口中,渲染器可以获得一个 EGLSurface,然后将其与 EGLContext 一起用于渲染 OpenVG 内容。

渲染器

OpenVG 渲染器使用 OpenVG API 向矢量 GPU 发送命令和数据,后者会以加速方式渲染场景图,从而卸载 CPU 的图形渲染工作。许多操作(如矩形和字体字形的渲染)都非常适合 OpenVG,因为它们可以表示为描边和填充的路径。在 OpenVG 渲染器中,使用 VGImage 可以处理通常涉及纹理的场景图项目。此外,在渲染屏幕外表面时(如使用 "图层"),场景子树会渲染为 VGImage,可在场景中重复使用。

渲染循环

OpenVG 渲染器反映了 Basic 渲染循环的行为,它在单线程中运行所有 OpenVG 命令。

有关渲染循环的更多信息,请参阅Qt Quick Scene Graph

着色器效果

ShaderEffect QtQuick 2 中的组件无法通过 OpenVG 适配渲染。虽然可以使用 和 QML 项目层(都是屏幕外表面),但无法通过 项目对其应用着色器特效。这是因为 OpenVG 缺乏应用每个顶点和每个片段着色器操作的 API。不过,您可以利用 OpenVG API 中的 "图像过滤器 "操作,获得与 ShaderEffects 在自定义项中提供的效果类似的效果。要集成自定义 OpenVG 渲染,请将 与 结合使用。ShaderEffectSource ShaderEffect QSGRenderNode QSGRendererInterface

粒子效果

OpenVG 适配程序无法渲染粒子效果。请尽可能将粒子从场景中完全移除。否则,即使它们不可见,仍需要进行一些处理。

渲染文本

与 OpenGL 后端不同,OpenVG 适配版的文字渲染基于字形路径渲染,不使用距离场技术。

透视变换

OpenVG API 不允许使用非参数变换对路径进行变换,但可以使用Qt Quick 。同样,当您在应用透视变换时使用矩形(Rectangles)和文本(Text)等路径渲染组件时,OpenVG 后端会在应用变换之前首先渲染为 VGImage。这种行为会在运行时占用更多内存,耗费更多时间;请尽可能避免。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.