Итак, я портирую игру, которая была первоначально написана для Win32 API, для Linux (ну, портируя порт OS X порта Win32 в 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.