Rendu de carte 2D sale

10

J'entends toujours les gens parler de "rendu sale" en ce qui concerne le rendu de carte pour HTML5. J'ai googlé et cherché sur GameDev à ce sujet, mais il n'y a pas grand-chose à ce sujet.

  • C'est quoi exactement?
  • Comment l'implémenter correctement?
foobar
la source

Réponses:

12

Cela signifie que lorsque l'arrière-plan est dessiné, tout n'est pas redessiné à chaque image. Lorsque quelque chose sur la carte bouge, la zone qu'elle occupait est marquée comme sale . Ensuite, lorsque vous dessinez, vous savez que vous n'avez qu'à redessiner cette partie de l'arrière-plan. Ceci est bénéfique car il vous suffit alors de redessiner les zones qui n'étaient pas affichées auparavant.

Donc, cela n'est vraiment bénéfique que lorsque vous n'avez pas beaucoup de choses à déplacer, sinon vous passez plus de temps à déterminer les nouveaux domaines à dessiner que si vous redessinez tout l'arrière-plan. Ce n'est plus trop courant car la plate-forme est généralement assez rapide pour tout redessiner sans problème. Comme il ne s'agit vraiment que d'une fonctionnalité d'optimisation, je l'ignorerais pour le moment et y reviendrais si vous trouvez que les performances font défaut.

MichaelHouse
la source
6

Le rendu dans la plupart des jeux a lieu dans une boucle (la boucle de jeu) et à chaque itération de la boucle de jeu, le backbuffer entier est effacé (dans ce cas, votre canevas) et redessiné à partir de zéro.

Le terme rendu sale fait référence à une technique où, au lieu de supprimer l'intégralité du canevas à chaque image, vous ne le supprimez qu'à la demande (c'est-à-dire uniquement lorsque quelque chose a changé dans la scène) et éventuellement seulement une partie de celui-ci (c'est-à-dire uniquement la partie quelque chose a changé ).

Ce processus de marquage d'une partie seulement de votre toile à redessiner est ce à quoi fait référence sale (c'est - à-dire que cette partie de la toile est sale et doit être redessinée mais tout le reste est toujours propre et ne doit pas être touché ).

Je n'ai aucune idée s'il existe un moyen spécial pour implémenter cela en HTML5, mais j'ai trouvé cette ressource qui pourrait vous donner quelques idées.

David Gouveia
la source