性能指南

由于 Qt Quick 2D Renderer 不使用 OpenGL,我们失去了使用许多可以提高渲染速度的优化功能的权限。为了充分使用 Qt Quick 2D Renderer,有一些指南需要遵循。

2D 硬件加速

Qt Quick 2D Renderer 旨在使用 2D 硬件加速可以加速的操作。2D 硬件加速使用平台插件,这些插件利用了 QBlitter API(例如 DirectFB)。

动画

需要记住的是,在 Qt Quick 2 中,每次场景图中的节点被标记为脏时,整个窗口都需要重绘。没有局部更新机制只会更新窗口的脏区域。这意味着任何正在运行的动画都将强制进行整个窗口的完全重绘,并且在使用 Qt Quick 2D Renderer 的情况下,这可能导致 CPU 队列。

变换

当使用 OpenGL 渲染器渲染场景图时,变换不会带来性能上的惩罚。这一点在 Qt Quick 2D Renderer 中并不相同。平移操作不会带来性能上的惩罚,但应尽可能避免缩放和旋转变换。

隐藏项

Qt Quick 2D Renderer 会绘制所有未使用可见性属性或透明度为 0 明确隐藏的项。没有 OpenGL,就没有深度缓冲区来检查完全被不透明项遮挡的项,因此将会绘制所有内容——即使是不必要的。

像素填充预算

在开发将使用 Qt Quick 2D Renderer 应用程序时,需要考虑您的像素填充预算,或者您可以在目标帧率所需的时间内推送屏幕的像素量。例如,如果您的目标是每秒渲染应用程序 60 帧,那么您在需要在屏幕上刷新像素之前,有大约 16 毫秒的时间渲染到帧缓冲区。根据您硬件的性能,在 16 毫秒内,您只能处理有限数量的像素写入操作。您设计界面时应考虑,每个额外添加的项都会减少您的像素填充预算。

Qt Quick 2D Renderer 使用画家算法按从后至前的顺序绘制场景中的每个项。如果您的界面在顶部堆叠许多项,请记住每个图层都会被完全绘制,而不仅仅是可见的部分。过多地重绘可能导致浪费像素填充预算。

©2016 The Qt Company Ltd. 所提供的文档的贡献由其各自的所有者拥有版权。本提供的文档是根据 Free Software Foundation 发布的 GNU 自由文档许可证 1.3 版本 许可的。Qt 和相关的标志是小企业的标识,也在芬兰和其他国家注册。所有其他商标都是各自所有者的财产。