【发布时间】:2010-09-05 05:34:17
【问题描述】:
我正在将最初为 Win32 API 编写的游戏移植到 Linux(嗯,将 Win32 端口的 OS X 端口移植到 Linux)。
自进程启动以来,我通过提供 uSeconds 来实现 QueryPerformanceCounter:
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 以外的其他东西。
【问题讨论】:
标签: linux winapi visual-c++ unix timer