9

スプライトと背景をdevkitPro (libnds、libarm などを含む) でアルファ ブレンドしようとしています。

誰もこれを行う方法を知っていますか?

4

3 に答える 3

6

一般的な参考資料として、私はかつてその問題について小さなブログ エントリを書きました。基本的に、最初にどのレイヤーが他のどのレイヤーに対してアルファブレンドされるかを定義する必要があります。私の知る限り、

  • ブレンドを表示するには、ソース レイヤーが宛先レイヤーの上にある必要があります。つまり、ソース レイヤーの優先度は、宛先レイヤーの優先度より数値的に低くする必要があります。
  • ソースレイヤーは半透明になるものであり、宛先は透けて見えるものです(はい、これはかなり混乱します)。

スプライトの場合、具体的には、必要なものと「支払う準備ができている」ものに応じて、アルファ ブレンディングを実現する 3 つの方法があります。

  • オンにすることで、すべてのスプライトにアルファブレンディングを持たせることができますBLEND_SRC_SPRITE...REG_BLDCNT[_SUB]あまり役に立ちません。
  • を使用して、一部のスプライトのブレンドを選択的にオンにすることができますATTR0_TYPE_BLENDED。ブレンド レベルは、すべてのスプライト (およびレイヤー) で同じになります。
  • ビットマップ タイプのスプライトは (パレットをバイパスして) 直接色を使用するため、ATTR2_PALETTE()GBA スプライトのフィールドは役に立たず、ATTR2_ALPHA.
于 2008-09-23T08:39:44.120 に答える
4

DS 上のスプライトは、ブレンド制御レジスタを使用してアルファ ブレンドできます。TONC は、レジスターの場所が同じであるため、メイン画面でブレンディングを機能させるために必要な情報を提供します。サブスクリーンでのアルファ ブレンディングは、1000h オフセットで異なるレジスタを使用して同じプロセスを使用します。

見ているレジスタは、メイン画面用のREG_BLDMOD、 、REG_COLVおよびサブ画面用の、、およびです。REG_COLYREG_BLDMOD_SUBREG_COLV_SUBREG_COLY_SUB

また、スプライトごとのブレンドを有効にするには、スプライトのグラフィック モードを変更する必要があることにも注意してください。

于 2008-08-14T00:32:58.377 に答える
0

私がGBAプログラミングを行ってから長い時間が経ちましたが、覚えているように、DSはGBAがサポートするもののほとんど(すべてではないにしても)をサポートしていますこのリンクには、GBAのアルファブレンディングを行う方法に関するセクションがあります(セクション13.2)。DS固有の方法があるかどうかはわかりませんが、これでうまくいくはずです。

于 2008-08-11T16:45:39.677 に答える