three 帧率控制

问题

在使用requestAnimateFrame的时候,不同的机器由于性能差异,帧率会有不小差别。比如我使用 22 款联想拯救者配 3060 的卡,官网许多案例可以跑到 165 帧,因为系统限制了最大帧率等于屏幕刷新率。 再者过高的帧率有时候会造成性能浪费,或者开发的应用需要兼顾到移动端的性能,那么控制帧率就变得必要了。

思路

在帧回调函数里通过判断距离上一帧回调函数更新的时间 deltadt 的和来更新 dt, 最后 dt 对帧间隔取余,这样做的目的是计算当前帧间隔和新帧间隔的差异,然后立即更新,下几帧就迅速趋近新的帧间隔了,奉上我的灵魂手绘(processon 真香):

看代码:

js 复制代码
const frameRate = 30;
let dt = 0;

let frameInterval = 1 / frameRate;

const clock = new THREE.Clock();
function render() {
	requestAnimateFrame();
	
	let time = clock.getDelta();
    const delta = Math.min(time, frameInterval);

    dt += time;
    if (dt > frameInterval) {
		// do frame logic
	}
	
	// renderer.render(scene, camera);
	
	dt = dt % frameInterval;
}

如果应用不是很复杂,这样简单的几行代码就能实现帧率精准控制,如果有帮助,赶紧来帮作者点个赞吧😁

相关推荐
kyriewen2 分钟前
别再写useMemo了——2026年这5个React性能优化已经是反模式
前端·react.js·ai编程
OpenTiny社区3 分钟前
TinyRobot v0.5.0 新版本强在哪?
前端·vue.js·github
奇牙coding6 分钟前
gpt-5.6-sol 接入指南:reasoning_effort 参数配置、推理链验证与常见报错排查
前端·css·gpt·ai
雪隐33 分钟前
个人电脑玩AI-10让5060 Ti给你打工——我让 Claude Code 喝上了本地杂粮:Ternary-Bonsai-27B 部署历险记
前端·人工智能·后端
Bigger44 分钟前
我受够了每天问“今天吃什么”,于是做了个 AI 菜单工具
前端·人工智能·agent
邢行行1 小时前
记一次 Three.js 踩坑:小球渲染出现诡异黑斑?原因竟然是这样...
前端
颜进强1 小时前
Claude Code -21 Agent 规划化编写范式
前端·后端
夕夕木各1 小时前
Ant Design 本地构建一直卡在 Bundling?一次 UtooPack 排查记录
前端·ant design
KaMeidebaby2 小时前
卡梅德生物技术快报|原核膜蛋白表达优化实操手册,膜蛋白的纯化梯度洗脱完整流程
前端·网络·数据库·人工智能·算法
大家的林语冰2 小时前
🫡 见证历史,TypeScript 7 重写成功,VS Code 原地起飞,GitHub 第一语言联手 Go 破而后立!
前端·javascript·typescript