2008-08-10 6 views

Répondre

4

En tant que référence générique, j'ai déjà écrit a small blog entry à propos de ce problème. Fondamentalement, vous devez d'abord définir quelle couche est alpha-mélangée par rapport à quelle autre couche (s). Afaik,

  • la ou les couche (s) source (s) doit (doivent) être sur une ou des couches de destination pour afficher un mélange. cela signifie que la priorité des couches source doit être numériquement inférieure à la priorité des couches de destination.
  • la couche source est ce qui va être translucide, la destination (s) est ce qui va être vu à travers (et oui, je trouve cela plutôt déroutant).

Pour le sprites, specifically, alors vous avez 3 façons d'atteindre l'alpha-mélange en fonction de ce que vous avez besoin et ce que vous êtes « prêt à payer » pour elle:

  • Vous pouvez faire tous les sprites avoir un alpha-blending en allumant BLEND_SRC_SPRITE en REG_BLDCNT[_SUB] ... pas si utile.
  • Vous pouvez activer sélectivement le fondu de certaines images-objets en utilisant ATTR0_TYPE_BLENDED. Le niveau de fusion sera le même pour tous les sprites (et couches)
  • Les sprites de type bitmap utilisent des couleurs directes (en ignorant les palettes). Le champ ATTR2_PALETTE() des sprites GBA est donc inutile et a été recyclé en ATTR2_ALPHA.
1

Cela fait long temps depuis que j'ai fait de la programmation GBA, mais si je me souviens, la DS prend en charge la plupart (sinon tous) les choses que GBA prend en charge. This lien a une section sur la façon de faire l'alpha-mélange pour GBA (section 13.2). Je ne sais pas s'il existe une façon spécifique à DS de le faire, mais cela devrait marcher pour vous.

+0

Trop spécifique à la GBA – CVertex

4

Les sprites sur le DS peuvent être alpha mélangés en utilisant le blend control registers. TONC fournit les informations nécessaires pour que le mélange fonctionne sur l'écran principal car les emplacements des registres sont les mêmes. Le mélange Alpha sur le sous-écran utilise le même processus avec différents registres à un décalage de 1000h.

Les registres vous regarderons sont REG_BLDMOD, REG_COLV et REG_COLY pour l'écran principal et REG_BLDMOD_SUB, REG_COLV_SUB et REG_COLY_SUB pour l'écran secondaire.

Rappelez-vous également que vous devrez change the sprite's graphic mode pour activer la fusion par image-objet.

Questions connexes