我使用opengl制作的游戏有点问题。游戏有时会半速运行,有时会正常运行。
我认为这不是导致问题的 opengl,因为它在我的计算机上以 14,000 fps 的速度运行。(即使它以半速运行)
这使我相信这是导致问题的“游戏计时器”。游戏计时器在单独的线程上运行,并被编程为在其“循环”结束时通过 Sleep(5) 调用暂停。如果我删除 Sleep(5) 调用,它会运行得如此之快,以至于我几乎看不到屏幕上的精灵。(可预测的行为)
我尝试在 Render() 线程的末尾抛出一个 Sleep(16) (也在它自己的线程上)。此操作应将 fps 限制在 62 左右。请记住,该应用程序有时会以预期速度运行,有时会以一半速度运行(我已在我拥有的两台计算机上尝试过并且它仍然存在)。
当它以预期的速度运行时,fps 为 62(好),有时 31-ish(坏)。它永远不会在半速和全速中间执行之间切换,即使重新启动后问题仍然存在。
所以它不是导致缓慢的渲染,它是 Sleep() 函数
我想我说的是 Sleep() 函数与它实际睡眠的时间不一致。这是经过验证的事情吗?我可以使用更好的 Sleep() 函数吗?