我想知道在 JavaScript 中实现渲染器的最佳方法是什么。在这里真正重要的不是渲染的内容部分 - 我更想知道何时以及如何有效地运行渲染器代码。

目前,我有 window.setInterval(renderFunc, 1000 / 20) ,它只会每 50 毫秒渲染一帧(即 fps = 20)。

关键是更快的计算机不会渲染更多的帧,而且更慢的计算机将无法 catch 20 fps,因此调用该函数的次数超过了计算机可能能够处理的次数。

我正在考虑使用 while(true) 循环,但它使用 100% 的 CPU 并且会卡住计算机本身 - 所以实际上我的游戏(渲染器是我的 3D 游戏)将不再可玩,因为你不能再点击按钮了。

在这种情况下,最有效的选择是什么,或者我还没有想到更好的方法?

提前致谢。

最佳答案

您可以计算帧渲染所需的时间,并调整帧间距以达到可接受的负载。例如,如果当前帧的渲染时间为 5 毫秒,而您想要 50% 的负载,则在下一帧之前等待 5 毫秒。您需要对其进行一些完整性检查,并且可能还需要使用最后几帧的时间。

关于javascript - 如何实现与 CPU 能力相关的渲染器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5121326/

10-11 19:57
查看更多