0からのゲームプログラミング > αブレンディング

Back Next
更新日 2003.11.30
αブレンディング

◆ αブレンディング

 αブレンディング(アルファ・ブレンディング)とは、透明もしくは、半透明の処理をすることです。プログラムで、αブレンディングの設定をすることも可能ですが、ここでは、αチャンネル付きの画像を用意して、αブレンディングしてみます。


 DirectX が対応している、αチャンネルを持っているファイル形式には、DDS形式、TGA形式がありあます。TGA形式で保存出来るツールなら、それなりにあります。そういったツールを使うのが最も手っ取り早いのですが、使い易いツールは有料であるという現状があります。

 若干手間は増えますが、Windows に標準で付属しているペイントでも作成出来るやり方でやってみます。


 まず、普通のRGB画像とマスク用の白黒画像を用意します。
 

RGB画像 Jiki.bmp

白黒画像 Jiki_a.bmp
 

 白黒画像で、白は表示される部分を表し、黒は透明になる部分です。中間色を使用しても良く、灰色にすると半透明になります。RGB画像を Jiki.bmp というファイル名にすれば、白黒画像のファイル名には、RGB画像と同じファイル名で、ドットの前に、_a を付けて下さい。


 DirectX SDK には、これら2つのファイルから DDS形式のファイルに変換するツール、DirectX Texture Tool が付属しています。

 「スタート」メニュー → 「すべてのプログラム(P)」 → 「Microsoft DirectX 9.0 SDK Update (Summer 2003)」 → 「DirectX Utilities」 → 「DirectX Texture Tool」 を選択して下さい。

 「File」メニューの「Open...」(Ctrl+O) を選択して、RGB画像である Jiki.bmp を開きます。すると、ファイル名に _a が付いている白黒画像も一緒に読み込まれます。後は、「File」メニューの「Save」(Ctrl+S) を選択して、DDS形式で保存します。


 作成したDDS形式のファイルを読み込んでプログラムを実行し、本当に透明になって表示されているか確認してみて下さい。


 プログラムを実行して画像を表示したとき、環境によっては画像が1ドットずれて表示されることがあります。各グラフィックボードによって若干計算方法が違いますから、誤差としてそうなるようです。対策として、用意する画像の周り1ドットを透明にすると、例えずれたとしてもそれ程問題ないですよね。もし、画像のぎりぎりまで使っていたとすると、環境によっては、画像の下の色が、画像の上に表示される、ということもあり得ます。


◆ ファイルパックについて

 以下のように、3つの画像ファイルを読み込むコードを書いていたとします。
 

	// ファイルパック開始
	g_pFilePack->Begin("Data/Pack0.dat");


	// 画像ファイルを読み込む
	m_Texture0.Read(g_pD3DDevice, "DataForWork/Jiki0.bmp");
	m_Texture1.Read(g_pD3DDevice, "DataForWork/Jiki1.bmp");
	m_Texture2.Read(g_pD3DDevice, "DataForWork/Jiki2.bmp");


	// ファイルパック終了
	g_pFilePack->End();


 Debug モードのときには、ファイルパック開始からファイルパック終了までに読み込んだファイルを1つのファイルに自動的にパックします。パックされたファイルは、g_pFilePack->Begin の引数で指定したパスに作成されます。

 Release モードのときには、パックされたファイル(上の例では、Pack0.dat)からファイルを読み込み実行します。

 前に Debug モードで実行して下さい、と書いたのは、最初にファイルパックの処理を走らせる必要があったからです。一度 Debug モードで実行すればファイルが作成されますから、後は Release モードでも実行出来るようになります。

 Debug モードのときには、変換の処理が入る為、読み込みが遅くなってしまいますが、Release モードのときには、1つのファイルから読み込むだけですから、ディスクのシークタイムが短縮され、高速に読み込むことが出来るようになります。また、他人にファイルの内容を見られる心配がなくなります。


◆ 配布するとき

 配布するときに必要なファイルは、Release モードで作成された実行ファイル(*.exe)と、Data フォルダを一つのフォルダに入れて配るだけです。その他にリードミーファイルを同梱するのが一般的でしょうか。

 今までの内容で作成されたプログラムは、こちらのページにあります。まだまだ、ゲームとは呼べないですね。(^^;....

【スポンサード リンク】


Back Next

0からのゲームプログラミング > αブレンディング