Question

J'essaie de mélanger alphabétiquement les sprites et les arrière-plans avec devkitPro (y compris libnds, libarm, etc.).

Est-ce que quelqu'un sait comment faire ça?

Était-ce utile?

La solution

Comme référence générique, j'ai écrit une fois une petite entrée de blog à propos de cette question.Fondamentalement, vous devez d'abord définir quel calque est mélangé en alpha avec quel(s) autre(s) calque(s).Autant que je sache,

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

Pour le les sprites, en particulier, vous disposez alors de 3 façons de réaliser un alpha-blending en fonction de ce dont vous avez besoin et de ce que vous êtes « prêt à payer » pour cela :

  • Vous pouvez faire en sorte que tous les sprites aient un mélange alpha en activant BLEND_SRC_SPRITE dans REG_BLDCNT[_SUB] ...pas si utile que ça.
  • Vous pouvez activer sélectivement le mélange de certains sprites en utilisant ATTR0_TYPE_BLENDED.Le niveau de fusion sera le même pour tous les sprites (et calques)
  • Les sprites de type bitmap utilisent des couleurs directes (en contournant les palettes), donc le ATTR2_PALETTE() champ de sprites GBA est inutile et a été recyclé dans ATTR2_ALPHA.

Autres conseils

Les sprites sur la DS peuvent être mélangés en alpha en utilisant le registres de contrôle des mélanges.TONC donne les informations nécessaires pour faire fonctionner le mélange 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 avec un décalage de 1000h.

Les registres que vous consulterez sont REG_BLDMOD, REG_COLV, et REG_COLY pour l'écran principal et REG_BLDMOD_SUB, REG_COLV_SUB, et REG_COLY_SUB pour le sous-écran.

N'oubliez pas non plus que vous devrez changer le mode graphique du sprite pour activer le mélange par sprite.

Cela a été un long Je n'ai pas fait de programmation GBA, mais si je me souviens bien, DS prend en charge la plupart (sinon la totalité) des éléments pris en charge par GBA. Ce Le lien contient une section sur la façon de réaliser un mélange alpha pour GBA (section 13.2).Je ne sais pas s'il existe une manière spécifique à DS de procéder, mais cela devrait fonctionner pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top