跳到主要内容
← 全部概念
性能优化 / 28

每帧时间预算

16.67 ms,以及它花在了哪里

交互演示

交互演示 · 移动指针或点击画面,观察变化

在 60 fps 下,游戏必须在 16.67 毫秒内完成每一帧;输入、游戏逻辑、物理和渲染共同分享这段时间。如果一帧耗时过长,就会错过屏幕刷新,玩家便会看到卡顿。测量每个系统的耗时,优先优化最耗时的部分,就像这里把帧耗时推过红线的物理计算峰值。

适用场景

分别测量各系统的耗时,找出哪些工作让一帧超过目标时长。应测量有代表性的高负载场景和慢帧,而不只是空关卡中的平均 FPS。

实现示例

不依赖特定引擎的伪代码。请根据你使用的引擎调整函数和坐标约定。

start = now()
updateSimulation()
simulationMs = now() - start
start = now()
submitRendering()
renderSubmissionMs = now() - start

常见错误

CPU 提交命令的耗时不等于 GPU 执行耗时。在条件允许时使用 GPU 计时,检查高百分位的帧耗时,并在优化前后对比同一个场景。

内容原作 Nicolas Zullo · 中文整理与交互改编