C++:计算游戏中的总帧数

3 c++ int memory-management increment long-integer

不是很好的标题,但我不知道该命名.

无论如何,我在计算我的游戏中的总帧数(所以我可以计算平均FPS)long int.为了防止游戏持续很长时间,我该怎么做才能确保我的游戏long int不会超过其限制?如果超过限制会发生什么?

谢谢.

peo*_*oro 8

任何类型的计数器都存在此问题.

对于您的具体问题,我不担心.

一个long int在最糟糕的情况下计数到20亿(甚至更多)(32位计算机/控制台).假设你的游戏每秒1000帧(这是很多!),你的计数器需要20000000秒才能超时:超过5000小时,超过231天.

如果你尝试长时间运行它,我很确定其他东西会导致你的游戏停止!


Jam*_*mes 5

整个游戏过程中的平均 FPS 似乎并不是一个非常有用的统计数据。通常,您希望测量峰值和谷值,例如最高 fps/最低 fps 以及低于和高于阈值的帧数。

但事实上,我并不担心。即使您只使用 32 位无符号整数,您的游戏也可以以 60fps 运行 19884 小时,然后才会溢出。你应该没问题。

编辑:

在这种情况下检测溢出的最佳方法是检查整数在增加后值是否减少。如果是这样,您可以在周围保留另一个计数器,该计数器是您溢出的次数。


Eme*_*ger 5

我会考虑使用指数加权移动平均线.这种方法将一举两得:它将避免积累大量的问题,并且它也将适应最近的行为,因此2010年的累积平均值100fps不会扭曲平均值,因此2fps率在2011年一个月左右似乎可以接受:).