【发布时间】:2015-12-07 19:24:44
【问题描述】:
我的程序的 fps 不正确。当我使用 RivaTuner 统计数据计算我的应用程序的 fps 时,它给出了例如 3000 fps。但是我的程序计算出一个完全不同的数字,比如 500。它一直在上下波动,而 Rivatuner 却没有。
这就是我计算 deltatime 的方式(deltaTime 变量是一个浮点数):
std::chrono::high_resolution_clock timer;
auto start = timer.now();
...doing stuff here...
auto stop = timer.now();
deltaTime = std::chrono::duration_cast<std::chrono::microseconds>(stop - start).count() / 1000.0f; //DELTATIME WAS LESS THAN 1 MILLISECOND SO THAT IS WHY I USED THIS
这是我计算 fps 的方式:
float fps = (1.0f / deltaTime) * 1000.0f;
我将我的游戏速度乘以 deltaTime 变量,但是因为它正在做一些奇怪的事情(在整个时间里上下非常快),这也搞砸了。例如,我的 RivaTuner 说 2000 fps 我的游戏运行速度比它说的 4000 fps 慢。
但是当应用程序运行速度较慢时,它需要更多时间来渲染 1 帧(所以,deltaTime 越高,游戏速度就越高?)。
这对吗?
提前致谢。
【问题讨论】:
-
您是否分别重新计算每一帧的 fps?这可以解释你的结果的跳跃性。如果您在更长的时间内取平均值,您将获得更准确的结果。
-
即使我这样做了,游戏速度仍然很跳跃。
-
在多少帧/多长时间内对结果进行平均?