Pergunta

Eu estou tentando mistura alfa sprites e backgrounds com devkitPro (incluindo libnds, libarm, etc.).

Alguém sabe como fazer isso?

Foi útil?

Solução

Como uma referência genérica, uma vez eu escrevi uma pequena entrada de blog sobre esse problema.Basicamente, você precisa primeiro definir que a camada é alfa-misturado contra a qual outra camada(s).Afaik,

  • a fonte de camada(s) deve ser sobre o destino de camada(s) para ter alguma mistura exibida.isso significa que a prioridade da fonte de camadas deve ser numericamente menor do que a prioridade de destino camadas.
  • camada de origem é o que vai ser translúcido, o destino(s) é o que vai ser visto através de (e sim, eu acho isso muito confuso).

Para o sprites, especificamente, em seguida, você tem 3 maneiras de conseguir alpha-blending, dependendo do que você precisa e o que você está "disposta a pagar" para isso:

  • Você pode fazer todos os sprites tem alguns alpha-blending ligando BLEND_SRC_SPRITE no REG_BLDCNT[_SUB] ...não é tão útil.
  • Você pode ativar a mistura de alguns sprites usando ATTR0_TYPE_BLENDED.A mistura de nível vai ser o mesmo para todos os sprites (e camadas)
  • bitmap tipo de sprites uso direto cores (ignorando o paletas), de modo que o ATTR2_PALETTE() campo de GBA sprites é inútil e tem sido reciclado em ATTR2_ALPHA.

Outras dicas

Sprites do nintendo DS pode ser combinada alfa usando o mistura de registradores de controle.TONC dá as informações necessárias para a obtenção de mistura trabalhar na tela principal, porque a registrar os locais são os mesmos.Alpha blending na subtela utiliza o mesmo processo com registros diferentes em um 1000h deslocamento.

Os registros que você vai estar olhando em são REG_BLDMOD, REG_COLV, e REG_COLY para a tela principal e REG_BLDMOD_SUB, REG_COLV_SUB, e REG_COLY_SUB para o ecrã secundário.

Lembre-se também de que você vai ter que mudar o sprite gráfico do modo de para habilitar a mistura por sprite.

Tem sido um longo tempo desde que eu fiz de qualquer CARTUCHO de programação, mas se bem me lembro, o DS suporta a maioria (se não todas) das coisas que GBA oferece suporte. Este link tem uma seção sobre como fazer alpha blending para GBA (seção 13.2).Eu não sei se existe um DS ou um específico modo de fazê-lo, mas isso deve funcionar para você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top