c++ - Nintendo DS Homebrew 中的 Alpha 混合 Sprite

标签 c++ c nintendo-ds

我正在尝试使用 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/

相关文章:

c - gets_s() 预期行为

c - 尝试解除分配二维数组时访问冲突读取

c# - 读NDS游戏头?

c++ - 自定义成员检测器中的模糊调用

c++ - 插入多个输出流?

c++ - FPGA开发入门

c++ - getline() valgrind 内存泄漏

c - 尝试在 C 函数中复制字符串时出现段错误