我正在尝试用devkitPro(包括libnds,libarm等)将Sprite和背景进行Alpha混合。

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

最佳答案

作为一般引用,我曾经写过有关该问题的a small blog entry。基本上,首先必须定义将哪个图层与其他哪个图层进行alpha混合。据我所知,

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

  • 对于sprites, specifically,您有3种方法可以实现alpha混合,具体取决于您的需求和为此“准备付款”的内容:
  • 您可以通过打开BLEND_SRC_SPRITE中的REG_BLDCNT[_SUB]来使所有的sprite具有某种alpha混合功能,...没那么有用。
  • 您可以使用ATTR0_TYPE_BLENDED选择性地打开某些 Sprite 的混合。所有 Sprite (和图层)的混合级别将相同
  • 位图类型的 Sprite 使用直接颜色(绕过调色板),因此GBA Sprite 的ATTR2_PALETTE()字段是无用的,已被回收为ATTR2_ALPHA
  • 关于c++ - Nintendo DS Homebrew中的Alpha混合 Sprite ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7209/

    10-11 23:07