我正在尝试使用devkitPro(包括libnds,libarm等)将精灵和背景进行alpha混合。
有谁知道怎么做?
答案 0 :(得分:4)
DS上的精灵可以使用blend control registers进行alpha混合。 TONC提供了在主屏幕上进行混合工作所需的信息,因为寄存器位置相同。子屏幕上的Alpha混合使用相同的过程,在1000h偏移处使用不同的寄存器。
您要查看的注册表为主屏幕REG_BLDMOD
,REG_COLV
和REG_COLY
以及REG_BLDMOD_SUB
,REG_COLV_SUB
和{{ 1}}用于子屏幕。
另外请记住,您必须change the sprite's graphic mode才能启用每个精灵的混合。
答案 1 :(得分:4)
作为一般参考,我曾写过关于这个问题的a small blog entry。基本上,您首先必须定义哪个图层与其他图层进行alpha混合。 AFAIK,
对于sprites, specifically,您可以通过3种方式实现Alpha混合,具体取决于您需要的内容以及您“准备支付”的内容:
BLEND_SRC_SPRITE
中的REG_BLDCNT[_SUB]
来让所有精灵都进行一些alpha混合......不是那么有用。 ATTR0_TYPE_BLENDED
有选择地启用某些精灵的混合。所有精灵(和图层)的混合级别都相同ATTR2_PALETTE()
字段无用且已被回收到ATTR2_ALPHA
。 答案 2 :(得分:0)
自从我完成任何GBA编程以来,这是很长时间,但我记得,DS支持GBA支持的大部分(如果不是全部)内容。 This链接有一节介绍如何为GBA进行Alpha混合(第13.2节)。我不知道是否有特定于DS的方法,但这应该适合你。