Je me retrouve donc à porter un jeu, qui a été écrit à l'origine pour l'API Win32, vers Linux (enfin, à porter le portage OS X du portage 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é à QueryPerformanceFrequency()
en donnant une constante de 1000000 comme fréquence, cela fonctionne bien sur ma machine ce qui me donne une variable 64 bits qui contient uSeconds
depuis le démarrage du programme. Ainsi, Est-ce que c'est portable ? Je ne veux pas découvrir qu'il fonctionne différemment si le noyau a été compilé d'une certaine manière ou quoi que ce soit d'autre. Je suis d'accord avec le fait qu'il ne soit pas portable sur autre chose que Linux, cependant.