例如,我有 60 fps 用于游戏逻辑,但 50 fps 用于 VSync。我应该将游戏循环移动到不同的线程并发送绘图线程的绘图请求还是我仍然可以用一个线程解决这个问题?
问问题
1398 次
3 回答
2
您的游戏逻辑是否需要 1s/60 来计算,或者这只是您使用的模拟间隔?如果它是一个间隔,我建议您通过显示每个帧所花费的时间来调整模拟间隔,即您测量帧之间的时间并用它来提供您的模拟。
于 2012-04-29T23:23:29.613 回答
0
您应该使用计时器而不是硬编码的计时。(而不是 1/60 秒,而是使用先前更新和当前更新之间的差异。)这避免了计算无法保持在 60fps 的情况。那么垂直同步也不会成为问题。
如果我错了,请纠正我,但您可以以任何 fps 进行渲染,并且可以以任何其他 fps 进行屏幕绘制而不会出现任何问题(可能会有一点抖动)
对于多核 CPU,我建议在可行的情况下使用线程。例如物理在一个线程中,在另一个线程中渲染(使用快照数据渲染以防止副作用)。
于 2012-05-02T15:15:34.967 回答
0
看看 Glenn Fiedler 的这篇文章,“Fix your timestep”:
于 2014-02-12T05:35:44.010 回答