例如,我有60 fps的游戏逻辑但50 fps的VSync。我应该将游戏循环移动到另一个线程并发送绘图线程的绘图请求,或者我仍然可以通过一个线程解决这个问题吗?
答案 0 :(得分:2)
您的游戏逻辑是否需要1/60才能计算,或者这仅仅是您使用的模拟间隔?如果它是一个间隔,我建议你按照每个显示一个帧所花费的时间调整模拟间隔,即你测量帧之间的时间并用你的模拟进行模拟。
答案 1 :(得分:1)
看看Glenn Fiedler的这篇文章,“修复你的时间步”:
答案 2 :(得分:0)
您应该使用计时器而不是硬编码计时。 (而不是使用先前更新和当前更新之间的差异而不是1/60秒。)这可以避免计算无法达到60fps的情况。那么VSync也不会成为一个问题。
如果我错了,请纠正我,但你可以在任何fps渲染,屏幕在任何其他fps处绘制而没有任何问题(除了可能有点抖动)
对于多核CPU,我建议在实际使用时使用线程。例如,一个线程中的物理,另一个线程中的渲染(使用快照数据渲染以防止副作用)。