限制框架项目中的帧速率

时间:2018-07-30 10:53:37

标签: three.js aframe frame-rate

2013年下半年,我将在MacBook Pro上开发一个大型项目。运行该项目时,无论我使用哪种浏览器(Firefox,Safari,Chrome)和项目大小(也会发生这种情况),计算机的风扇始终快速旋转一个仅包含一个简单a-box的项目)。

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

是否可以将帧速率限制为10fps,以保持计算机的正常运行?还是通过其他任何方式来限制aframe项目的翻牌消耗?我已经使用sudo cputhrottle plugin-container 10尝试了一种本机方法,但这不仅限制了aframe-renderer,而且限制了整个Firefox浏览器。我可以在JavaScript或“浏览器”设置中的某个地方拉一下中断吗?

1 个答案:

答案 0 :(得分:0)

没有您的项目代码很难说。大型数据集甚至可以简化高规格的Macbook pro。我发现,只要有可能就可以暂停任何渲染以使用户的计算机安静下来,这很有帮助。

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

例如:

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

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

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

这样,代码仅在绝对需要时才呈现。这为我省去了很多帧速率方面的麻烦,而风扇仅在密集操作期间才启动,然后在完成后关闭,就像典型的3D游戏体验一样。

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