Przenoszę grę, która została pierwotnie napisana dla Win32 API, na Linuksa (cóż, przenoszę port OS X portu Win32 na Linuksa).
Mam realizowane QueryPerformanceCounter
przez podanie uSeconds ponieważ proces uruchamiania:
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;
}
To, w połączeniu z QueryPerformanceFrequency()
podaniem stałej 1000000 jako częstotliwości, działa dobrze na moim komputerze , dając mi 64-bitową zmienną, która zawiera się uSeconds
od momentu uruchomienia programu.
Czy to jest przenośne? Nie chcę odkryć, że działa inaczej, jeśli jądro zostało skompilowane w określony sposób lub coś w tym rodzaju. Jednak nie przeszkadza mi to, że jest nieprzenośny na coś innego niż Linux.