./2760 > Mais les fonctions timeBeginPeriod() et timeEndPeriod() ont justement été faites pour contrôller ton animation plus précisément si le besoin se faisait sentir. (C'est un API très très vieux)
Il s'est juste avéré que par l'implémentation du truc, c'était plutôt une mauvaise idée qu'une bonne idée. (Car ce timer, contrôlable par n'importe quelle application userland, impacte directement le noyau, et tous les autres processus)
./2761 >

Direct3D supporte ça (par défaut) depuis des plombes également. Pour OpenGL, je sais plus si c'était contrôlable par les applications à l'époque (OpenGL
en tant qu'API n'est pas très configurable), mais la fonctionnalité existait aussi. (En gros, le mécanisme implémenté par ces API, c'est que quand tu appelles la fonction de présentation de ta scène, ça swap les buffer au bon moment, et pendant ce temps, ton process est en attente)
./2763 > Je suis pas persuadé que Linux ait jamais disposé d'une plus grande précision que Windows. De mémoire, à l'époque (avant le tick-less) tu choisissais une fréquence,
100Hz ou 1000Hz, à la compilation du noyau, et ensuite, c'était gravé dans le marbre. (Ok, de fait, 100Hz c'est mieux que 64Hz, mais à part ça, c'est tout)
C'est complètement documenté que Sleep() sous Windows a dans le meilleur des cas la précision du timer global. Tout comme il est documenté que usleep() sous Linux dépend de la précision du timer système. (Par contre tu peux sans doute faire mieux avec nanosleep() aujourd'hui, mais je crois pas qu'il y ait de réel équivalent (documenté) sous Windows)
Et ouais, tout est basé sur des interruptions. Le Timer système y compris. C'est juste un moyen comme un autre de réveiller le système, mais c'est le seul auquel tu as "directement" accès en mode utilisateur…
