スプライトと背景をdevkitPro (libnds、libarm などを含む) でアルファ ブレンドしようとしています。
誰もこれを行う方法を知っていますか?
スプライトと背景をdevkitPro (libnds、libarm などを含む) でアルファ ブレンドしようとしています。
誰もこれを行う方法を知っていますか?
一般的な参考資料として、私はかつてその問題について小さなブログ エントリを書きました。基本的に、最初にどのレイヤーが他のどのレイヤーに対してアルファブレンドされるかを定義する必要があります。私の知る限り、
スプライトの場合、具体的には、必要なものと「支払う準備ができている」ものに応じて、アルファ ブレンディングを実現する 3 つの方法があります。
BLEND_SRC_SPRITE
...REG_BLDCNT[_SUB]
あまり役に立ちません。ATTR0_TYPE_BLENDED
。ブレンド レベルは、すべてのスプライト (およびレイヤー) で同じになります。ATTR2_PALETTE()
GBA スプライトのフィールドは役に立たず、ATTR2_ALPHA
.DS 上のスプライトは、ブレンド制御レジスタを使用してアルファ ブレンドできます。TONC は、レジスターの場所が同じであるため、メイン画面でブレンディングを機能させるために必要な情報を提供します。サブスクリーンでのアルファ ブレンディングは、1000h オフセットで異なるレジスタを使用して同じプロセスを使用します。
見ているレジスタは、メイン画面用のREG_BLDMOD
、 、REG_COLV
およびサブ画面用の、、およびです。REG_COLY
REG_BLDMOD_SUB
REG_COLV_SUB
REG_COLY_SUB
また、スプライトごとのブレンドを有効にするには、スプライトのグラフィック モードを変更する必要があることにも注意してください。
私がGBAプログラミングを行ってから長い時間が経ちましたが、覚えているように、DSはGBAがサポートするもののほとんど(すべてではないにしても)をサポートしています。このリンクには、GBAのアルファブレンディングを行う方法に関するセクションがあります(セクション13.2)。DS固有の方法があるかどうかはわかりませんが、これでうまくいくはずです。