Domanda

Sto cercando di fondere alfa sprite e sfondi con devkitPro (inclusi libnds, libarm, ecc.).

Qualcuno sa come fare questo?

È stato utile?

Soluzione

Come riferimento generico, ho scritto una volta un piccolo post sul blog riguardo a tale questione.Fondamentalmente, devi prima definire quale livello viene miscelato alfa rispetto a quali altri livelli.Per quanto ne so,

  • i livelli di origine devono trovarsi sopra i livelli di destinazione affinché venga visualizzata una certa fusione.ciò significa che la priorità dei livelli di origine dovrebbe essere numericamente inferiore alla priorità dei livelli di destinazione.
  • lo strato di origine è ciò che sarà traslucido, la destinazione(i) è ciò che verrà visto attraverso (e sì, lo trovo piuttosto confuso).

Per il sprite, in particolare, hai quindi 3 modi per ottenere l'alpha blending a seconda di ciò di cui hai bisogno e di quanto sei "pronto a pagare" per questo:

  • Puoi fare in modo che tutti gli sprite abbiano un po' di fusione alfa attivando BLEND_SRC_SPRITE In REG_BLDCNT[_SUB] ...non così utile.
  • Puoi attivare selettivamente la fusione di alcuni sprite utilizzando ATTR0_TYPE_BLENDED.Il livello di fusione sarà lo stesso per tutti gli sprite (e livelli)
  • gli sprite di tipo bitmap utilizzano colori diretti (ignorando le tavolozze), quindi il file ATTR2_PALETTE() il campo degli sprite GBA è inutile ed è stato riciclato ATTR2_ALPHA.

Altri suggerimenti

Gli sprite sul DS possono essere miscelati alfa utilizzando il file registri di controllo della fusione.TONC fornisce le informazioni necessarie per far funzionare la miscelazione nella schermata principale perché le posizioni dei registri sono le stesse.La fusione alfa nella schermata secondaria utilizza lo stesso processo con registri diversi con un offset di 1000 ore.

I registri che vedrai sono REG_BLDMOD, REG_COLV, E REG_COLY per la schermata principale e REG_BLDMOD_SUB, REG_COLV_SUB, E REG_COLY_SUB per la schermata secondaria.

Ricorda anche che dovrai farlo cambiare la modalità grafica dello sprite per abilitare la fusione per sprite.

È stato un lungo tempo da quando ho programmato per GBA, ma se ricordo bene, il DS supporta la maggior parte (se non tutte) delle cose supportate da GBA. Questo link ha una sezione su come eseguire l'alpha blending per GBA (sezione 13.2).Non so se esiste un modo specifico per DS per farlo, ma questo dovrebbe funzionare per te.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top