使用clock()的C ++ deltatime为0

时间:2015-12-07 12:10:08

标签: c++

我正在为我的视频游戏计算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(我相信毫秒)。

提前致谢。

2 个答案:

答案 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以整数除法计算。但即使你解决了这个问题,由于机器上正在运行其他东西,你的计时方法也不可靠。