Ich portiere ein Spiel, das ursprünglich für die Win32-API geschrieben wurde, nach Linux (nun, ich portiere den OS X-Port des Win32-Ports nach Linux).
Ich habe implementiert, QueryPerformanceCounter
indem ich die uSeconds seit dem Start des Prozesses angegeben habe:
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;
}
Dies, zusammen mit der QueryPerformanceFrequency()
Angabe einer konstanten Frequenz von 1000000 als Frequenz, funktioniert auf meinem Computer gut und gibt mir eine 64-Bit-Variable, die uSeconds
seit dem Start des Programms enthält .
Ist das also tragbar? Ich möchte nicht herausfinden, dass es anders funktioniert, wenn der Kernel auf eine bestimmte Weise kompiliert wurde oder so etwas. Ich bin damit einverstanden, dass es nicht auf etwas anderes als Linux portierbar ist.