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,以加速渲染方式,将图形渲染从 CPU 转移。许多操作,如矩形和字体符号的渲染,非常适合 OpenVG,因为它们可以表示为路径,可以描边和填充。处理通常涉及纹理的场景图项在 OpenVG 渲染器中使用 VGImage 进行处理。此外,当渲染到离屏表面(如层)时,场景子树被渲染到 VGImage,然后可以被场景重用。
渲染循环
OpenVG 渲染器与基本渲染循环的行为相似,它在单个线程中运行所有 OpenVG 命令。
有关渲染循环的更多信息,请参阅 Qt Quick 场景图。
着色器效果
QtQuick 2 中的 ShaderEffect 组件无法通过 OpenVG 适配进行渲染。虽然可以使用 ShaderEffectSource 和 QML 项层(二者都是离屏表面),但不可能通过 ShaderEffect 项来应用着色器效果。这是因为 OpenVG 缺乏应用于每顶点和每片段着色器操作的 API。然而,您可能可以利用 OpenVG API 中的图像过滤器操作来获取与自定义项中的 ShaderEffects 类似的效果。要集成自定义 OpenVG 渲染,可以使用 QSGRenderNode 与 QSGRendererInterface 结合使用。
粒子效果
使用 OpenVG 适配无法渲染粒子效果。在可能的情况下,完全从场景中删除粒子。否则,即使它们不可见,仍然需要一些处理。
渲染文本
使用OpenVG适配器进行文本渲染基于渲染字形路径,与OpenGL后端不同,不使用距离场技术。
透视变换
OpenVG API不允许使用非仿射变换对路径进行变换,但Qt Quick可以做到。因此,当使用路径(如矩形和文本)应用透视变换进行渲染组件时,OpenVG后端首先将渲染到VGImage上,然后再应用变换。这种行为在运行时使用更多的内存,并且耗时更长;如果可能的话,请避免使用它。
© 2024 Qt公司有限公司。本文档中包含的贡献是各自所有者的版权。本提供的文档是根据自由软件基金会的发布,在GNU自由文档许可版本1.3下的条款许可。Qt及其相关标志是芬兰及其它全球国家的Qt公司商标。所有其他商标属于其各自所有者。