(29-12-2011, 06:21 PM)quentin01 a écrit : Hum ... J'aurais quelques critiques à formuler sur ce que tu as dit. Déjà sur RequestAnimationFrame que tu as cités, cette techno' n'étant encore vraiment pas prêt à l'utilisation, ses performances sont trop ... Hum ... Aléatoire ! Il est normalement censé figer le nombre de frame, en adaptant les pauses entre les deux tours de boucles, mais il n'est pas encore assez au point et son utilisation est encore hasardeuse. Si j'aurais rédigé à te place ce post je l'aurais soit spécifié qu'il est encore trop instable ou alors je ne l'aurais carrément pas cité.
D'ailleurs ton histoire de buffer est pas forcément clair pour tous le monde, j'ai au début cru que la boucle d'affichage faisait aussi boucle de jeu et qu'après les deux sont séparés. Mais je me trompais sur toute la ligne, le buffer sert juste à bufferiser une seule image que l'on affiche ensuite dans le canvas affiché. Sauf qu'à mon avis si le nombre d'images va croissant les performances seront pas forcément au rendez vous vu qu'il faudra stocker un élément DOM qui est surement plus lourd qu'une simple image.
Sinon je trouve le reste des articles et des informations pertinentes et intéressantes.
Bien sûr il n'y a aucun problème, c'est pour cela que j'ai ouvert ce topic
RequestAnimationFrame n'est en effet pas au point, il y a d'ailleurs les préfixes -moz-, -webkit- etc qui nous l'indique Sur Firefox je n'arrive pas à figer le FPS à 30 d'ailleurs, il semble ne pas prendre en compte la valeur de l'intervalle... Je le cite parce que de toute façon, rien n'est encore figé dans toutes ces nouvelles possibilités. Par ailleurs, dans le cas d'un MMO, arrêter de dessiner le canvas n'est pas intéressant c'est pour cela que je ne l'utilise pas. Mais pour un RPG, ça peut donner une forme de pause bien pratique
Pour le buffer j'ai mis longtemps à comprendre aussi, en fait c'est tout bête une fois que tu as saisi le truc. Le code que j'ai mis est là pour tenter d'expliquer. Mais grossièrement comme tu l'as dis, on créé un canvas où l'on va dessiner, on ne l'ajoute pas au DOM, et avec la méthode drawImage(); on peut dessiner un canvas dans un autre canvas car le canvas va être considéré comme une image. Il va donc être mis en cache. Ca sera une bête image en cache en fait
Et niveau performance c'est 10 fois plus rapide, profilage IE9 (ou Chrome) à l'appui
Tuto pour la pseudo 3D avec Canvas, comme la démo du FPS de Ben Joffee pour ceux qui se souviennent (http://www.benjoffe.com/code/demos/canvascape/textures)
http://dev.opera.com/articles/view/creat...l-5-can-1/