【问题标题】:Limit the frame rate on an aframe project限制帧项目的帧速率
【发布时间】:2018-07-31 01:46:16
【问题描述】:

我在 2013 年末的 MacBook Pro 上开发了一个 aframe 项目。运行该项目时,我的计算机风扇总是快速旋转,无论我使用哪种浏览器(firefox、safari、chrome)和项目大小(也会发生一个项目只包含一个简单的 a-box)。

aframe-stats 显示我的项目(1028244 个顶点,342748 个面)仍然以 20 fps 运行。

是否有可能将帧速率限制为 10fps 以保持我的计算机安静?或者任何其他方式来限制 aframe 项目的失败消耗?我已经尝试过使用sudo cputhrottle plugin-container 10 的本机方法,但这不仅限制了aframe-renderer,而且限制了整个firefox 浏览器。我可以在 JavaScript 或浏览器设置中的某处拉断吗?

【问题讨论】:

  • 您总是可以通过检查计数器来限制执行,并且只有在达到 10 时才执行和重置?或者当帧的持续时间最终大于 1000/10 时?

标签: three.js aframe frame-rate


【解决方案1】:

没有你的项目代码很难说。即使是高规格的 macbook pro,大型数据集也能轻松搞定。我发现尽可能暂停任何渲染以使用户的机器安静下来很有帮助。

我个人删除了自动下一个动画帧渲染,以支持等待控件和对象更改。

例如:

this.controls.addEventListener('change', function(e){ addToRenderStack(); });

一个简单的函数 addtorenderstack 在一个渲染列表中放入一个新值,期望渲染将在未来的某个时间发生,而不是马上发生。该列表还可用于在调用堆栈中记录谁请求渲染,并缩小性能消耗。

addtorenderstack 将渲染请求放在一个列表中。在 requestanimationframe 循环中,如果列表有任何长度,则在场景中调用渲染。堆栈立即被清除,而不是一一处理。如果控件或动画继续发出渲染请求,列表将再次具有长度,并且请求动画帧将以与另一个渲染相同的方式处理它们。

这样,代码仅在绝对需要时才呈现。这为我节省了很多帧率,而且风扇只在密集操作时启动,然后在完成后关闭,就像典型的 3d 游戏体验一样。

您的里程可能会有所不同,具体取决于您的应用中发生的情况。我从事工程工作,所以当工程师检查或展示模型时,3d 世界的视图经常会停止。

【讨论】:

    猜你喜欢
    • 2020-04-07
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    相关资源
    最近更新 更多