【发布时间】:2010-09-05 15:39:34
【问题描述】:
我正在尝试将精灵和背景与devkitPro(包括 libnds、libarm 等)进行 alpha 混合。
有人知道怎么做吗?
【问题讨论】:
标签: c++ c nintendo-ds
我正在尝试将精灵和背景与devkitPro(包括 libnds、libarm 等)进行 alpha 混合。
有人知道怎么做吗?
【问题讨论】:
标签: c++ c nintendo-ds
作为一般参考,我曾经写过a small blog entry 关于这个问题。基本上,您首先必须定义哪个图层与哪个其他图层进行 alpha 混合。阿法克,
对于sprites, specifically,您可以通过 3 种方法来实现 alpha 混合,具体取决于您的需求以及您“准备支付”的费用:
REG_BLDCNT[_SUB] 中打开BLEND_SRC_SPRITE 来使所有精灵都具有一些alpha 混合... 不是那么有用。 ATTR0_TYPE_BLENDED 选择性地打开某些精灵的混合。所有精灵(和图层)的混合级别都相同ATTR2_PALETTE()字段无用,已被回收到ATTR2_ALPHA中。 【讨论】:
DS 上的精灵可以使用blend control registers 进行 alpha 混合。 TONC 提供了在主屏幕上进行混合所需的信息,因为寄存器位置相同。子屏幕上的 Alpha 混合使用相同的过程,但在 1000h 偏移处使用不同的寄存器。
您将查看的寄存器是用于主屏幕的REG_BLDMOD、REG_COLV 和REG_COLY,以及用于子屏幕的REG_BLDMOD_SUB、REG_COLV_SUB 和REG_COLY_SUB。
还请记住,您必须change the sprite's graphic mode 才能启用每个精灵的混合。
【讨论】:
自从我完成任何 GBA 编程以来已经有 很长时间了,但我记得,DS 支持 GBA 支持的大部分(如果不是全部)东西。 This 链接有一节介绍如何为 GBA 进行 alpha 混合(第 13.2 节)。我不知道是否有特定于 DS 的方法,但这应该适合您。
【讨论】: