自 Mac 启动以来,我找到了一个获取毫秒数的函数:
U32 Platform::getRealMilliseconds()
{
// Duration is a S32 value.
// if negative, it is in microseconds.
// if positive, it is in milliseconds.
Duration durTime = AbsoluteToDuration(UpTime());
U32 ret;
if( durTime < 0 )
ret = durTime / -1000;
else
ret = durTime;
return ret;
}
问题是,大约 20 天后,AbsoluteToDuration 一直返回 INT_MAX,直到 Mac 重新启动。
我尝试使用下面的方法,它有效,但看起来 gettimeofday 需要更多时间并且会减慢游戏速度:
timeval tim;
gettimeofday(&tim, NULL);
U32 ret = ((tim.tv_sec) * 1000 + tim.tv_usec/1000.0) + 0.5;
有没有更好的方法来获取自某个时期以来经过的毫秒数(最好是自应用程序启动以来)?
谢谢!