Qt Quick OpenVG 适配
OpenVG 适配版是 Qt Quick 2的替代渲染器,它使用OpenVG命令渲染场景图的内容,以提供硬件加速的2D矢量和光栅图形。与软件适配版本类似,部分功能和优化已不可用。尽管如此,大多数Qt Quick 2应用程序仍可直接运行,但任何尝试使用不受支持功能的操作都将被忽略。
EGL 要求
与默认的 OpenGL 渲染器不同,该渲染器不提供获取 OpenVG 上下文的内置支持。这意味着渲染器需要负责请求和管理当前上下文。为此,您需要在 OpenVG 渲染器中直接使用 EGL。 因此,OpenVG 渲染器仅可与支持创建带QSurfaceFormat::OpenVG 功能的 QWindows 的平台插件配合使用。从该窗口中,渲染器可以获取一个 EGLSurface,随后可将其与 EGLContext 配合使用以渲染 OpenVG 内容。
渲染器
OpenVG 渲染器使用 OpenVG API 将命令和数据发送至向量 GPU,该 GPU 以加速方式渲染场景图,从而将图形渲染任务从 CPU 卸载。许多操作(如矩形和字体字形的渲染)非常适合 OpenVG,因为它们可以表示为路径,并通过描边和填充来实现。 通常涉及纹理的场景图项渲染,在 OpenVG 渲染器中通过 VGImage 进行处理。此外,当渲染到离屏表面(如使用 Layers 时),场景子树会被渲染到 VGImage 中,该 VGImage 可在场景中重复使用。
渲染循环
OpenVG 渲染器与 Basic 渲染循环的行为一致,并在单线程中执行所有 OpenVG 命令。
有关渲染循环的更多信息,请参阅Qt Quick Scene Graph。
着色器效果
ShaderEffect QtQuick 2 中的组件无法通过 OpenVG 适配器进行渲染。虽然可以使用 和 QML Item Layers(二者均为离屏表面),但无法通过 项向其应用着色器效果。这是因为 OpenVG 缺乏用于应用顶点着色器和片段着色器操作的 API。 不过,您可以利用 OpenVG API 中的图像滤波器(Image Filter)操作,以获得与 ShaderEffects 在自定义项中提供的效果相似的效果。要集成自定义 OpenVG 渲染,请将 与 结合使用。ShaderEffectSource ShaderEffect QSGRenderNode QSGRendererInterface
粒子特效
无法通过 OpenVG 适配版本渲染粒子效果。在可能的情况下,请将粒子完全从场景中移除。否则,即使它们不可见,仍会占用部分处理资源。
文本渲染
OpenVG 适配版本中的文本渲染基于字形路径的渲染,与 OpenGL 后端不同,它不使用距离场技术。
透视变换
OpenVG API 不允许使用非仿射变换对路径进行变换,但通过 `Qt Quick` 可以实现。因此,当您在应用透视变换时渲染矩形和文本等基于路径的组件时,OpenVG 后端会先将内容渲染到 `VGImage` 中,然后再应用变换。 这种行为会在运行时消耗更多内存并花费更多时间;如无必要,请尽量避免。
© 2026 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.