我正在制作一个使用统一的iOS游戏。我正在测试一些着色器,我已经为游戏,在某些情况下,设备将运行在30 FPS,但没有100%的设备利用率。
有时测试会从较高的设备利用率%开始,然后随着时间的推移而降低,即使测试只是简单地呈现一个带有材料的飞机。
例如,我刚刚在iPad 4上运行了一个着色测试:设备利用率为85%,渲染器使用率为85%,每秒钟使用1%核心动画帧
这个测试使用的是几乎所有的CPU,并且只呈现4个三角形(2个大平面覆盖屏幕)。
有人知道为什么会发生这种事吗?通常渲染器利用率高达100%.很难理解,是个图形新手。
IOS有强制的v同步。我很好奇为什么仪器分析器中的“每秒核心动画帧”会说,如果启用了v同步,就会显示12个FPS,以及这将如何与85%的设备利用率相对应。
也许该设备正在渲染12帧,而2帧被丢弃以使其降至v同步帧速率10?这将导致~83-84%的有效设备利用率。
或者,考虑到上述统计数据(85%的利用率和12个FPS),GPU可以在100%的使用率下呈现14个FPS。但是,v同步需要10,或15 FPS,两者之间不需要任何东西。这可能会导致GPU减速,不会浪费电源和CPU,但仍然可以安全地保持在v同步的下一步以上。
发布于 2017-02-14 17:29:39
通常,使用VSYNC,CPU实际上在99%的时间内什么都不做,因为它只是向驱动程序发送简单的顶点缓冲区批处理(正如您所说的,只有几个三角形)。如果着色器带宽很大,则需要多个帧来渲染.在你的例子中,你说它是12 fps,例如60/12 =5帧。因此,CPU (或者运行线程的核心)实际上在5个帧中什么也不做(除了等待vsync)。对于3d引擎来说,这是对性能的极大浪费。
为什么“利用率”统计数据是重要的?重要的是你的框架,这就是你如何知道你做得有多好,而不是在操作系统中某个任意的“使用”数字,天知道它是如何从一开始就组装起来的。
https://computergraphics.stackexchange.com/questions/4676
复制相似问题