30 votes

html5 canvas conseils de performances générales

je suis en train de développer un jeu pour le canvas d'html5 plate-forme tout en ciblant essentiellement les appareils mobiles. la toile est redimensionnée à la plus grande résolution disponible, de sorte qu'il en fait presque un plein écran de jeu.

sur un ipad, ce serait un 1024x786 toile. à une résolution comme ça j'ai remarqué une baisse significative du taux de rafraîchissement. sur les petites résolutions d'480x320 sur iphone, le jeu fonctionne en douceur! donc je suppose que c'est parce que l'appareil est fillrate limitée.

mais de toute façon je tiens à optimiser autant que possible.

donc, je serais très reconnaissant si vous pouviez poster toute les performances générales des conseils que vous avez, quand il s'agit de canvas d'html5 développement.

25voto

Boris Smus Points 4347

Voir aussi cette toile d'optimisation de la performance de l'article sur html5rocks, qui contient jsperf de données qui comprend les navigateurs mobiles.

13voto

galambalazs Points 24393

Vous pouvez lire en Faisant un iPad Appli HTML5 & rend vraiment rapide par Thomas Fuchs

Les points clés qu'il fasse:

  1. Les Images de ralentir les choses immensément– se débarrasser d'eux
  2. Évitez text-shadow & box-shadow
  3. Accélération matérielle est assez nouveau... et buggy (animations simultanées est limité)
  4. Évitez opacity si possible (parfois interfère avec l'accélération matérielle pour le rendu)
  5. Utiliser translate3d, pas translate (ce dernier n'est pas difficile-accéléré)

Quelques autres points qui peuvent améliorer les performances de façon significative:

  • utiliser getImageData aussi rarement que possible (de ralentissement majeur) [2]
  • combiner plus d'une toile, afin de repeindre les petites pièces qui sont en train de changer plus souvent

Vous pouvez également référence de votre application avec google Chrome/Firebug Profil peut vous montrer quelles sont les fonctions qui sont lents.

[2] http://ajaxian.com/archives/canvas-image-data-optimization-tip

5voto

bebraw Points 4356

Un couple de plus de liens:

Il est difficile de donner de conseils car je ne suis pas assez familier avec votre jeu. Vous pourriez souhaitez diviser rendu à plusieurs couches, cependant. Cela a un sens, surtout si vous avez quelques éléments statiques là. De cette façon, vous pouvez éviter certains de compensation et améliorer le code en général.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X