Ich portiere ein Spiel, das ursprünglich für die Win32-API geschrieben wurde, auf Linux (oder besser gesagt, ich portiere die OS X-Portierung der Win32-Portierung auf Linux).
Ich habe implementiert QueryPerformanceCounter
durch Angabe der uSekunden seit dem Start des Prozesses:
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, gepaart mit QueryPerformanceFrequency()
mit einer konstanten Frequenz von 1000000, funktioniert gut auf meinem Rechner so dass ich eine 64-Bit-Variable erhalte, die Folgendes enthält uSeconds
seit dem Start des Programms.
Also Ist das tragbar? Ich möchte nicht herausfinden, dass es anders funktioniert, wenn der Kernel auf eine bestimmte Weise kompiliert wurde oder so etwas. Ich habe jedoch kein Problem damit, dass es nicht auf andere Systeme als Linux portierbar ist.