Je porte un jeu, qui a été initialement écrit pour l'API Win32, sur Linux (enfin, le portage du port OS X du port Win32 vers Linux).
J'ai implémenté QueryPerformanceCounter
en donnant les uSecondes depuis le démarrage du processus:
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;
}
Ceci, couplé au fait de QueryPerformanceFrequency()
donner une constante 1000000 comme fréquence, fonctionne bien sur ma machine , me donnant une variable 64 bits qui contient uSeconds
depuis le démarrage du programme.
Alors, est-ce portable? Je ne veux pas découvrir que cela fonctionne différemment si le noyau a été compilé d'une certaine manière ou quelque chose comme ça. Cependant, je suis d'accord avec le fait qu'il ne soit pas portable vers autre chose que Linux.