可以通过启用显示 Kanzi 应用程序性能信息的性能 HUD 的显示。 使用性能 HUD 查看应用程序在目标设备上的性能并找出性能瓶颈。
我们以PC端为例进行说明,包括但不限于PC侧显示信息。
FPS 显示每秒渲染的帧数。
Last Frame 显示最后一帧的信息
Main Loop Counter 显示Kanzi 主循环运行的次数
Time 显示渲染帧所花费的时间(以毫秒为单位)。
Batch Count 显示执行了多少个单独的绘制调用(glDrawElements 和 glDrawArrays)。
Triangle Count 显示在一帧中总共绘制了多少个单独的三角形。
Texture Switches 显示新纹理绑定到GPU的次数。
FBO Switches 显示有多少帧缓冲区对象绑定到 GPU。
Timeline Clock 显示在应用程序中执行所有动画所花费的时间(以毫秒为单位)。
Resource Memory Use 显示Kanzi 应用程序使用的本地 GPU 内存 (VRAM) 和非本地 GPU 内存 (RAM) 的估计值。
Animations 显示Kanzi应用程序中的活动动画和所有动画的数量。
关于Batch count的一些理解
由于GPU目前是无法访问内存数据的,所以GPU在渲染时,一些mesh和材质,贴图等资源都是CPU传给GPU的。
CPU和GPU交互,靠的是一个命令缓冲区。命令缓冲区包含了一个命令队列,CPU负责添加命令,而GPU用来读取指令。指令的内容一是设置渲染状态,通知GPU读取数据,二就是渲染。command buffer的主要作用就是为了能够让GPU和CPU能够并行的工作,用来提升渲染的效率。
每进行一次batch count 都会调用一次draw call的操作,每次的draw call 都会使CPU由用户模式切换到内核模式,这个切换过程是非常耗时的。
因此,batch count数量过大,主要对CPU的性能消耗比较明显,优化batchcount是我们需要进行优化的目标。
我们也可以通过合批的方式,来减少batch 过多,如果有同学在kanzi侧有实现合批的方法,可以留言互相交流学习^_^。
最后放上一波资源推荐!
资源推荐
如果大家想了解更多过关于Kanzi 学习信息,可以B站订阅“中科创达-智能座舱”官方号,https://space.bilibili.com/301867101/channel/series。目前内含Kanzi插件教程/Kanzi仪表教程/Kanzi零基础教程,后续会有课程陆续上新。