J'ai écrit un petit moteur graphique pour mon jeu qui a plusieurs canevas dans un arbre (ils représentent essentiellement des calques.) Chaque fois que quelque chose dans un calque change, le moteur marque les calques affectés comme "sale" et dans le code de rendu, la couche affectée la plus basse est copiée à son parent via drawImage(), qui est ensuite copiée dans son parent et ainsi de suite jusqu'à la couche racine (le canevas à l'écran).() appelle par trame mais empêche également de rediriger n'importe quoi sous le calque affecté. Cependant, dans les cadres où rien ne change aucun rendu ou drawImage() n'a lieu, et dans les cadres où seuls les objets de premier plan se déplacent, les appels de rendu et drawImage() sont minimes.performance des canevas superposés vs manual drawImage()
Je voudrais comparer à l'aide de plusieurs toiles à l'écran sous forme de couches, comme décrit dans cet article:
http://www.ibm.com/developerworks/library/wa-canvashtml5layering/
Dans l'approche de la toile à l'écran, nous traitons le rendu sur une base par couche et laissez le navigateur gérer l'affichage des calques sur l'écran correctement. De la recherche que j'ai faite et de tout ce que j'ai lu, cela semble être généralement accepté comme étant plus efficace que de le manipuler manuellement avec drawImage(). Donc, ma question est, le navigateur peut-il déterminer ce qui doit être rendu plus efficacement que je peux, malgré ma connaissance d'initié de exactement ce qui a changé chaque image?
Je connais déjà la réponse à cette question est «Faites-le dans les deux sens et de référence." Mais pour obtenir des données précises, j'ai besoin d'une application dans le monde réel, et cela dans des mois. D'ici là, si j'ai une approche acceptable, j'aurai de plus gros poissons à frire. Donc j'espère que quelqu'un a été sur cette route et peut fournir un aperçu de ceci.
Juste pour clarifier, mon moteur utilise une approche en couches aussi. La seule différence est que j'utilise drawImage manuellement pour dessiner mes calques hors écran sur le canevas à l'écran, au lieu de laisser le navigateur dessiner un tas de calques à l'écran. – flancor