我正在尝试使用 devkitPro 对 Sprite 和背景进行 alpha 混合(包括 libnds、libarm 等)。
有人知道怎么做吗?
最佳答案
作为一般引用,我曾经写过a small blog entry关于那个问题。基本上,您首先必须定义哪个图层与其他图层进行 alpha 混合。阿法克,
- 源层必须在目标层之上才能显示一些混合。这意味着源层的优先级在数值上应低于目标层的优先级。
- 源层是半透明的,目标层是透明的(是的,我觉得这很困惑)。
对于sprites, specifically ,然后您有 3 种方法来实现 alpha 混合,具体取决于您的需要和您“准备支付”的费用:
- 您可以通过在
REG_BLDCNT[_SUB]
中打开BLEND_SRC_SPRITE
使所有的 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/