【XNA】アルファブレンディングでの注意点

XNA
久しぶりのXNAネタです。

XNA4.0になってアルファブレンドの設定が変わったことは前の記事で書きました。

今回は新しいゲームを夏ごろからちまちまとデザイナーが上げてくれる素材を調整しつつ
作成していて気づいた部分をメモします。
部品.png
この画像にはアルファ値が設定されており、
背景は完全に透明、天使の輪が半透明で描画されています。
これをキャラクターと掛け合わせて描画しようとして
失敗例.png

こうなってしまいました。
半透明部分がグレー色になってしまい、本来の色がでていません。

本来ならこのように表示されるはずです。
完成図.png

これはアルファブレンディングの乗算済みアルファになってしまうからだそうです。

前の記事で「SpriteBlendMode.AlphaBlend」を「BlendState.NonPremultiplied」とすると
XNA3.1で表現してきたアルファ表示ができると説明しました。

今回は「BlendState.NonPremultiplied」として
そのまま半透明な画像を表示していましたが、
期待した結果にならなかったので調べたところ

ひにけにXNAのこの記事を参考にしたところ、解決できました。

読み込む画像データのコンテントプロセッサー処理にて「Premultiplied Alpha」をTrueからFalseに変更することで
乗算済みアルファのテクスチャに指定しないようにできるようです。

ちなみに今作っているゲームの完成予定はまだまだ先ですね…


ゲーム画面がまったくコーディングできていません。

この記事へのコメント


この記事へのトラックバック