我正在为我的视频游戏计算deltatime,所以当有人PC很快时,游戏速度不会疯狂。我使用ctime库中的clock()函数来测量时间。问题是,我的fps太高了,deltatime是0.所以我的游戏速度也搞砸了。
这就是我计算增量时间的方法:
///DELTATIME AND FPS COUNTING
deltaTime = clock() - oldTime;
double fps = (1 / deltaTime) * 1000;
oldTime = clock();
deltaTime和oldTime的变量类型是float。 我需要让clock()函数更准确,所以它不是0(我相信毫秒)。
提前致谢。
答案 0 :(得分:5)
文字1
和变量deltaTime
(如果clock_t
)都是整数。整数除法将截断结果,因此1 / anything_larger_than_1
将始终为零。
您需要使用浮点除法:
1.0 / deltaTime
请注意使用double
文字1.0
。
答案 1 :(得分:1)
请改用std::this_thread::sleep_for
。这样可以保证当前线程的睡眠时间至少为指定的时间间隔,并且CPU使用率最低。
您的具体问题是由于1 / deltaTime
以整数除法计算。但即使你解决了这个问题,由于机器上正在运行其他东西,你的计时方法也不可靠。