gpt4 book ai didi

c++ - Windows sleep 不一致?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:29:52 25 4
gpt4 key购买 nike

我使用 opengl 制作的游戏有点问题。游戏有时会半速运行,有时会正常运行。

我不认为是 opengl 导致了问题,因为它在我的计算机上以 14,000 fps 的速度运行。 (即使以半速运行)

这让我相信是“游戏计时器”导致了问题。游戏计时器在单独的线程上运行,并被编程为在其“循环”结束时通过 Sleep(5) 调用暂停。如果我删除 Sleep(5) 调用,它运行得如此之快以至于我几乎看不到屏幕上的 Sprite 。 (可预测的行为)

我尝试在 Render() 线程的末尾(也在它自己的线程上)抛出一个 Sleep(16)。此操作应将 fps 限制在 62 左右。请记住,该应用程序有时以预期速度运行,有时以一半速度运行(我在我拥有的两台计算机上都尝试过并且它仍然存在)。

当它以预期速度运行时,fps 为 62(好),有时为 31-ish(差)。它从不在半速和全速中间执行之间切换,即使重启后问题仍然存在。

所以导致缓慢的不是渲染,而是 Sleep() 函数

我猜我想说的是 Sleep() 函数与它实际休眠的时间不一致。这是经过验证的事情吗?我可以使用更好的 Sleep() 函数吗?

最佳答案

可等待计时器(CreateWaitableTimerWaitForSingleObject 或其他类似的计时器)更适合定期唤醒。

但是,在您的情况下,您可能应该只启用 VSYNC。

关于c++ - Windows sleep 不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16827905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com