我正在将一个最初为Win32 API编写的游戏移植到Linux(很好,是将Win32端口的OS X端口移植到Linux)。
QueryPerformanceCounter
自程序启动以来,我已经通过提供uSeconds来实现:
BOOL QueryPerformanceCounter(LARGE_INTEGER* performanceCount)
{
gettimeofday(¤tTimeVal, NULL);
performanceCount->QuadPart = (currentTimeVal.tv_sec - startTimeVal.tv_sec);
performanceCount->QuadPart *= (1000 * 1000);
performanceCount->QuadPart += (currentTimeVal.tv_usec - startTimeVal.tv_usec);
return true;
}
再加上QueryPerformanceFrequency()
恒定的1000000作为频率,可以在我的机器上很好地工作,并为我提供了一个uSeconds
自程序启动以来包含的64位变量。
这是便携式的吗?我不想发现以某种方式或类似方式编译内核时,它的工作原理有所不同。我可以将其移植到Linux以外的其他软件上,这很好。