【发布时间】:2012-01-09 02:20:10
【问题描述】:
目前,我正在使用requestAnimationFrame 渲染 WebGL 内容,它以(理想情况下)60 FPS 运行。我还在同时安排一个“更新”进程,该进程使用setTimeout 处理 AI、物理等。我使用后者是因为我只需要每秒更新大约 30 次对象,而且它并不是绘制序列的一部分;为实际渲染通道节省剩余的 CPU 似乎是个好主意,因为我的大多数动画都相当消耗硬件。
我的问题是最佳实践之一。 setTimeout 和 setInterval 对电池寿命和 CPU 消耗不是特别友好,尤其是当浏览器不在焦点上时。另一方面,使用requestAnimationFrame(或将更新直接绑定到现有渲染阶段)可能会每秒强制执行比严格必要的更新多得多,并且可能在浏览器不在焦点时或在其他时间完全停止更新浏览器认为“动画”是不必要的。
更新而不是渲染内容的最佳行动方案是什么?
【问题讨论】:
标签: javascript settimeout webgl updates requestanimationframe