Bonjour,
j'utilise un dialogue "modeless" MFC contenu dans un contrôle ActiveX pour afficher ma fenêtre OpenGL contenant une scène 3D.
Jusque là, j'utilisais un timer pour animer ma scène. J'obtenais au max 60 FPS, ce qui me semblait en accord avec la résolution minimum des timer sous windows XP, qui est de 16ms.
J'ai alors voulu changer de systeme d'animation, pour pouvoir dépasser les 60FPS.
J'ai donc utilisé OnIdle (ou du moins une variante qui marche pour les CDialog, cf: http://www.codeproject.com/KB/dialog/idledialog.aspx). Ca marche, mais je suis toujours bloqué à 60FPS, et de plus l'animation s'arrête dès que mon curseur sort de la fenêtre...pas terrible.
Mais quand même, retomber pile-poil sur 60FPS ca m'a semblé louche, alors j'ai testé avec une boucle d'animation "forcée" du genre
Et je vous le donne en mille: de nouveau 60 FPS.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for(int i = 0; i < 1000; i++) Animate();
J'ai alors pensé à mon programme calculant les FPS, mais que j'utilise FRAPS ou RivaTuner, même résultat.
Donc voilà, il y a quelque chose qui me bloque à 60FPS et je ne sais pas d'où ca peut venir (pas de ma scène, j'ai fait les tests avec un simple cube). Si quelqu'un à une idée??
Et tant qu'à faire, quelle méthode me conseillez-vous pour obenir l'animation la plus rapide possible sous MFC?
- Timer?
- Multimedia Timer (ont une résolution inférieure à 16ms, mais apparement c'est un peu plus lourd à gérer) ?
- OnIdle ?
Merci d'avance!
Partager