--== DEVLYNX ==--

 
 
|
 
 
 
 
Accueil
News
Doc
Mémoire
Recrutement
Faq
Liens
Pseudo :

Mot de passe :


Pas de compte ?

S'inscrire...


Statistiques

Documentation


Rootretour à l'arborescence des catégories » Documentation techniqueEnsemble des informations pouvant être utiles au développement » Lynx docRestranscription de la documentation d'origine » Annexe 4 : Moteur de sprites » Positionnement de l'affichage de Handy et des sprites » Techniques de découpage matériel de l'image des sprite
«««« ( /^\ ) »»»»
INFOS SUR LA CATEGORIE

Créée le : 2009-10-07 11:30:00
Par : vince





INFOS SUR LA PAGE

Titre : Techniques de découpage matériel de l'image des sprite
Sous Titre :
Langue : FRA
Source : http://www.monlynx.de/lynx/sprite.html#_19
Auteur : vince
Posté par : vince

Techniques de découpage matériel de l'image des sprite

Quand un sprite est dessiné, le matériel de Handy fournit deux niveaux de découpage matériel. Les effets de découpage dont les développeurs peuvent profiter incluent :

¤ découpage normal quand le point de référence d'un sprite est dans la fenêtre mais que la génération de ce sprite amène des pixels hors fenêtre
¤ le super découpage où un sprite dont le point de référence commence en dehors de la fenêtre qui permet au matériel d'ignorer le traitement de la plupart des pixels du sprite.

Avant de décrire le découpage, voici un petit rappel rapide sur comment les données du sprite sont aménagées :

¤ Les données d'imagerie sont aménagées dans les quatres cadrans autour du point du référence. Le SCB dispose de bits qui indiquent le cadran de démarrage et la donnée elle même pour passer au cadran suivant.
¤ Le SCB pointe sur la première ligne "ligne" du premier cadran dans les données du sprite
¤ Une ligne de données du sprite comment par un octet qui est soit : un zéro pour spécifier la fin des données, soit un 1 pour spécifier la fin du cadran (le matériel passe alors au cadran suivant dans le sens des aiguilles d'une montre) ou n'importe quelle autre valeur qui indique le décalage pour la prochaine ligne de données.

Le découpage régulier est facile à comprendre. Quand on commence le rendu d'une ligne donnée d'un sprite, d_s que l'un des pixels tombe en dehors de la fenêtre, le matériel cesse de traiter la ligne et saute au début de la ligne suivante. Dès qu'une ligne complète est sur le point d'être rendue hors fenêtre, le matériel saute alors le reste des lignes et passe au cadran suivant (ou à la fin des des données, bien entendu).

Mais attendez, il y a plus. Introduisons le super découpage, avec de superbes illustrations.

Super découpage

"Si vous n'êtes pas dans la fenêtre vous êtes à moins de mi distance de la maison"




Si le point de référence tombe hors de la fenêtre d'affichage, le moteur de sprite matériel effectue le super découpage. Voici comment ça marche :

¤ Imaginez une ligne à mi distance du monde d'affichage à partir du centre de la fenêtre d'affichage. Appelons la ligne intermédiaire.
¤ Chaque cadran est rendu, un test est fait au début de chaque ligne est fait par rapport à la ligne intermédiaire sur chaque axe.
¤ Si la direction du dessin dans le cadran est vers la ligne intermédiaire sur cet axe, ce qui veut dire en dehors de la fenêtre d'affichage sur cet axe, alors l'imagerie ne pourra pas apparaitre dans la fenêtre d'affichage et les lignes ne seront pas traitées à part pour trouver le début du cadran suivant. C'est ça le super découpage.
¤ Prenez en compte le cercle dans l'illustration ci dessus. A partir du point de référence, vers le haut et vers la gauche pointent en direction de la fenêtre d'affichage (ces axes sont indiqués avec un O comme OUI pour le test) tandis que vers le bas et vers la droite s'éloignent de la fenêtre d'affichage (avec un N comme NON pour le test). Quand l'un des axes est indiqué avec un N, le cadran est superdécoupé. Ca veut dire qu'il faut un double Oui pour que les données des pixels du cadran soient traitées ce qui veut dire que quand un point de référence d'un sprite est hors fenêtre, trois des ses 4 cadrans sont superdécoupés !
¤ Si un cadran est superdécoupé, le moteur de sprite ne lit aucune des données de pixel et saute frénétiquement au prochain cadran à traiter. L'effet immédiat est une économie de temps notable.

Le super découpage se déroule dans un environnement centré sur la fenêtre d'affichage, donc pour tout clarifier le modèle de fenêtre et de monde imaginaire d'affichage utilisés dans ce document doivent être présentés différement, de manière plus égoïste. Considérez le rectangle dans l'illustration ci dessus. La logique impose que le cadran supérieur gauche du sprite devrait être le seul à ne pas être superdécoupé vu qu'il a l'air d'être le seul à pointer vers la fenêtre. Mais en fait, c'est le cadran inférieur gauche qui est le seul à ne pas être superdécoupé. La raison est plus clair avec la présentation alternative du monde d'affichage de Handy présentée ci après.



Notez que sur ce schémas, les sprites avec des coordonnées négatives peuvent être affichés dans la fenêtre malgré tout. Le fait de savoir si des sprites 9bits seront rendus correctement nécessite d'être finalisé. Ce qui nous amène à la conclusion que les choses devraient bien marcher sauf si bien entendu ce n'est pas le cas.

(Source : http://www.monlynx.de/lynx/sprite.html#_19)
«««« ( /^\ ) »»»»

générée en 5 ms
-= DevLynx, un site par vince pour vous =-