我正在将最初为 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 作为频率,在我的机器上运行良好,给了我一个 64 位变量,它包含uSeconds
自程序启动以来的内容。
那么这款便携吗?如果内核以某种方式或类似方式编译,我不想发现它的工作方式不同。但是,我认为它不能移植到 Linux 以外的其他东西上。