Frage

Ich versuche, Sprites und Hintergründe mit Alpha zu vermischen devkitPro (einschließlich libnds, libarm usw.).

Weiß jemand, wie man das macht?

War es hilfreich?

Lösung

Als allgemeine Referenz habe ich einmal geschrieben ein kleiner Blogeintrag zu diesem Thema.Grundsätzlich müssen Sie zunächst definieren, welche Ebene mit welcher anderen Ebene(n) alphaüberblendet wird.So viel ich weiss,

  • Die Quellebene(n) müssen über der/den Zielebene(n) liegen, damit eine gewisse Überblendung angezeigt wird.Das bedeutet, dass die Priorität der Quellebenen numerisch niedriger sein sollte als die Priorität der Zielebenen.
  • Die Quellebene ist das, was durchscheinend sein wird, die Zielebene ist das, was durchsichtig sein wird (und ja, ich finde das ziemlich verwirrend).

Für die Speziell Sprites, haben Sie dann drei Möglichkeiten, Alpha-Blending zu erreichen, je nachdem, was Sie brauchen und was Sie dafür zu zahlen bereit sind:

  • Sie können allen Sprites eine gewisse Alpha-Mischung verleihen, indem Sie sie aktivieren BLEND_SRC_SPRITE In REG_BLDCNT[_SUB] ...nicht so nützlich.
  • Sie können das Mischen einiger Sprites selektiv aktivieren, indem Sie verwenden ATTR0_TYPE_BLENDED.Der Mischgrad ist für alle Sprites (und Ebenen) gleich.
  • Sprites vom Bitmap-Typ verwenden direkte Farben (unter Umgehung der Paletten), also ATTR2_PALETTE() Das Feld der GBA-Sprites ist nutzlos und wurde recycelt ATTR2_ALPHA.

Andere Tipps

Sprites auf dem DS können mit Alpha gemischt werden Mischkontrollregister.TONC liefert die notwendigen Informationen, damit das Mischen auf dem Hauptbildschirm funktioniert, da die Registerpositionen dieselben sind.Beim Alpha-Blending auf dem Unterbildschirm wird derselbe Prozess mit unterschiedlichen Registern und einem Versatz von 1000 Stunden verwendet.

Die Register, die Sie sich ansehen werden, sind REG_BLDMOD, REG_COLV, Und REG_COLY für den Hauptbildschirm und REG_BLDMOD_SUB, REG_COLV_SUB, Und REG_COLY_SUB für den Unterbildschirm.

Denken Sie auch daran, dass Sie es tun müssen Ändern Sie den Grafikmodus des Sprites um das Mischen pro Sprite zu ermöglichen.

Es war ein lang Es ist schon lange her, dass ich GBA programmiert habe, aber soweit ich mich erinnere, unterstützt der DS die meisten (wenn nicht alle) Dinge, die GBA unterstützt. Das Der Link enthält einen Abschnitt zum Durchführen von Alpha-Blending für GBA (Abschnitt 13.2).Ich weiß nicht, ob es eine DS-spezifische Möglichkeit gibt, aber das sollte für Sie funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top