Alpha混合精灵在Nintendo DS Homebrew中

CVe*_*tex 9 c c++ nintendo-ds

我正在尝试使用devkitPro(包括libnds,libarm等)将sprite和背景进行alpha混合.

有谁知道如何做到这一点?

Pyp*_*ros 6

作为一般参考,我曾经写过一个关于该问题的小博客条目。基本上,首先必须定义将哪个图层与其他哪个图层进行alpha混合。据我所知,

  • 源层必须在目标层上才能显示某些混合。这意味着源层的优先级应在数值上低于目标层的优先级。
  • 源层将是半透明的,目标层将是透明的(是的,我觉得这很混乱)。

对于精灵,具体来说,您可以根据自己的需要和“准备付款”的方式,通过3种方式实现alpha混合:

  • 您可以通过打开BLEND_SRC_SPRITEin 来使所有子画面具有某种alpha混合效果REG_BLDCNT[_SUB]
  • 您可以使用选择性地启用某些精灵的混合ATTR0_TYPE_BLENDED。所有子画面(和图层)的混合级别将相同
  • 位图类型的精灵使用直接颜色(绕过调色板),因此ATTR2_PALETTE()GBA精灵的字段没有用,已被回收到中ATTR2_ALPHA