2010-08-13 23 views
3

Je viens d'un fond d'animation 2D et donc quand je nous une séquence animée je préfère utiliser une séquence d'images. Pour moi, cela a beaucoup de sens car vous pouvez facilement exporter la séquence d'images à partir de votre logiciel de composition/édition et en définir facilement l'aspect. Je suis novice dans le développement de jeux et je suis curieux de savoir comment utiliser une feuille de sprites. Quels sont les avantages et les inconvénients. La taille du fichier est-elle un problème? - Pour moi, il semblerait qu'un tas de petites images serait la même qu'une massive. En outre, la définition de chaque zone individuelle des sprites semble fastidieuse. Fondamentalement, je ne comprends pas pourquoi vous utiliseriez une feuille de sprite - s'il vous plaît éclairer moi.Quels sont les avantages et les inconvénients d'une feuille de sprite par rapport à une séquence d'images?

Merci

Répondre

6

Les performances sont meilleures pour les feuilles de sprite, car toutes vos données sont contenues dans une même texture. Disons que vous avez 1000 sprites jouant la même animation à partir d'une feuille de sprite. Le processus de dessin serait quelque chose comme.

Set the sprite sheet texture. 
Adjust UV's to show single frame of animation. 
Draw sprite 0 
Adjust UV's 
Draw sprite 1 
. 
. 
. 
Adjust UV's 
Draw sprite 998 
Adjust UV's 
Draw sprite 999 

En utilisant une séquence de texture pourrait entraîner dans le pire des cas:

Set the animation texture. 
Draw sprite 0 
Set the new animation texture. 
Draw sprite 1 
. 
. 
. 
Set the new animation texture. 
Draw sprite 998 
Set the new animation texture. 
Draw sprite 999 

Gah! Avant de dessiner chaque image-objet, vous devez définir l'état de rendu pour utiliser une texture différente et beaucoup plus lent que d'ajuster quelques UV.

4

Beaucoup (la plupart?) Cartes graphiques nécessitent une alimentation de deux enfants, dimensions carrées pour les images. Donc, par exemple 128x128, 512x512, etc Beaucoup/la plupart des sprites, cependant, ne sont pas de telles dimensions. Vous avez ensuite deux options:

  • Arrondissez l'image de l'image-objet au carré de puissance-de-deux le plus proche. Un sprite 16x32 devient deux fois plus grand avec un remplissage de pixel transparent à 32x32. (c'est très gaspillage)
  • Emballez plusieurs sprites en une image. Plutôt que de rembourrer avec de la transparence, pourquoi ne pas utiliser d'autres images? Emballez dans ces images aussi efficacement que possible! Ensuite, il suffit de rendre les segments de l'image, ce qui est totalement valide.

Évidemment, le deuxième choix est beaucoup mieux, avec moins d'espace perdu. Donc, si vous devez emballer plusieurs sprites dans une image, pourquoi ne pas les emballer tous sous la forme d'une feuille de sprite? Donc, pour résumer, les fichiers d'image lorsqu'ils sont chargés dans la carte graphique doivent être power-of-two et square. Cependant, le programme peut choisir de rendre un rectangle arbitraire de cette texture à l'écran; il n'a pas besoin d'être power-of-two ou square. Donc, emballez la texture avec plusieurs images pour faire l'utilisation la plus efficace de l'espace de texture.

2
  • feuilles de Sprite ont tendance à être plus petits fichiers (car il n'y a que 1 tête pour l'ensemble du lot.)
  • feuilles Sprite se chargent plus rapidement car il y a un seul accès au disque plutôt que plusieurs
  • Vous pouvez voir facilement ou ajuster plusieurs images à la fois
  • mémoire vidéo Moins gaspillée lorsque vous chargez le tout en une seule surface (comme Ricket a dit)
  • Les sprites individuels peuvent être délimités par des décalages (par ex. sur une grille implicite - pas besoin de marquer ou de noter explicitement la position de chaque image-objet)

L'utilisation de feuilles de sprite, mais de plusieurs petites, ne présente pas d'avantage considérable. Mais la pratique remonte à une époque où la plupart des gens utilisaient un logiciel graphique 2D approprié pour créer des graphiques de jeu, de sorte que le workflow de l'artiste n'était pas forcément la chose la plus importante à l'époque.