本篇将给大家隆重介绍一个渲染优化技术--合批渲染,许多做过或者接触过hmi的小伙伴们或多或少都会遇到项目优化的难题,遇到瓶颈抓耳挠腮,很多时候只能妥协,那么今天我们结合一下实际案例,探讨如何利用合批渲染技术来提升渲染引擎的性能,并介绍我们ssRender工具的 Tag 功能,以及通过对比实验和数据所展示的优势。
合批渲染技术是一种优化渲染过程的方法,它通过合并多个渲染对象的渲染请求,一次性提交给渲染引擎处理,从而减少渲染引擎的调用次数,提高渲染效率。这种技术在处理大量渲染对象时尤为有效,能够显著减少渲染引擎的负担,提升整体性能。
首先,我们选择了车载行业常见的显示元素——TT灯,并在ssRenderEditor工具布置了121个TT灯位。
Tag属性用于设置分层刷新的参数。如果将两个或多个Item的Tag参数设置为相同的字符串,例如:"light",ssRender将把所有的Tag值“light”的节点进行整组的状态刷新,从而减少因刷新过于分散而导致的性能损耗。
设置了Tag属性
没有设置Tag属性
对比实验的变量:是否设置Tag属性,然后我们让TT灯进行闪烁,不同的TT灯设置不同的显隐频率,模拟实车的报警灯效果,具体如下:
在仪表上的表现(qnx660+imx6d)
为了展示在QNX660 + i.MX6D环境中的性能表现,我们提供了以下数据:
ssrLoader用于加载工程文件和调用ssRender接口的进程。实验的对象是两个工程,两个工程中都有121个TT灯位,其中一个工程的所有TT灯节点的Tag参数都统一设置成了"light"。
1、首先,让我们看一下没有设置Tag属性的数据。在这种情况下,CPU占用率为23.67%,帧率在23至25FPS之间。
没有设置Tag属性的数据
2、接下来,让我们看一下设置了Tag属性的数据。在这种情况下,CPU占用率下降至4.83%,而帧率稳定在60FPS。
设置过Tag的数据
通过对比数据,可以清晰地看到设置Tag属性后性能有了显著提升。无论是从CPU占用率还是ssRender渲染引擎的帧率来看,优化效果都十分明显。因此,当我们遇到项目帧率偏低卡顿和性能瓶颈时,不妨尝试使用这个神奇的Tag属性。
最后,最后让我们来看下qnx侧的top数据多次实验的结果对比(HaveTag设置了Tag属性,NoTag没有设置Tag属性):
Qnx侧的设置Tag和不设置Tag的数据对比
结论:
1、CPU占用率对比:工程含Tag属性CPU (ssrLoader) 占用4.80%-5.98%(288-358.8DMIPS),相比不含Tag属性的工程,CPU占用率降低了39.7-40.5%。
2、工程含Tag属性的顿率在60FPS,相比不含Tag属性的工程,提升帧率33-38FPS。
如果本篇有帮助到各位看官,不妨点个赞呗~~
ssRender努力做国人自己的HMI解决方案!