Platform SDK: DirectX |
このツールは、新しい DXTn 圧縮フォーマットのテクスチャ マップを作成するためのツールである。圧縮されたテクスチャの作成は、実際にはそれほど難しくはなく、IDirectDrawSurface7::Blt メソッドによって変換することができる。上級の開発者は、おそらく各自の必要性に応じた専用ツールを作成するものと考えられるが、このツールは、以下のような便利な基本的機能を提供する。
ソース ファイル :(SDK ルート)\Samples\Multimedia\DDraw\Src\DXTex
実行可能ファイル :(SDK ルート)\Bin\DxUtils\Dxtex.exe
DirectX Texture ツールは、マルチドキュメント インターフェイスを使用する。テクスチャ マップはそれぞれドキュメントであり、複数のドキュメントを同時に開くことができる。
開いているドキュメントごとに、テクスチャを 1 つまたは 2 つのフォーマットで保持することができる。たとえば、32 ビット ARGB テクスチャを自動的に作成する BMP ファイルをインポートし、そのテクスチャを DXT1 フォーマットに変換することが可能である。ドキュメントには、両方のフォーマットでイメージが記憶され、ユーザーはウィンドウ内でクリックするか、または [View] メニューから [Original] または [New] を選択することによって、フォーマットの異なるイメージをフリップすることができる。これにより、イメージの圧縮によるアーティファクトが見つかりやすくなり、イメージの質を低下させずに、異なる圧縮フォーマットを試すことができる。
このテクニックを使用せずに ARGB を DXT1 に変換した場合、1 ビットを除くすべてのアルファが失われる。そして DXT2 に変換したとしても、アルファ レベルは 2 つしか存在しないことになる。Direct Texture ツールのシステムでは、この 2 回目の変換は元の ARGB フォーマットから行われ、変換された DXT2 イメージには、DXT2 がサポートする 16 レベルのアルファがすべて含まれる。このイメージを保存すると、元のフォーマットは破棄されて新しいフォーマットのみが保存される。
このシステムには、いくつか注意すべき点がある。
ミップマップを作成するには、[Format] メニューから [Generate MipMaps] を選択する。ソース イメージの高さおよび幅は、2 の累乗でなくてはならない。フィルタリングは、単純なボックス フィルタで実行される。つまり、最も近い 4 つのピクセルが平均化されて目的のピクセルが作成される。
DirectX Texture ツールは、テクスチャにおけるアルファを完全サポートする。BMP ファイルをインポートするとき、2 つのファイルが存在し、その片方のファイル名が「_a」で終わる場合 (例 tex.bmp および tex_a.bmp)、「_a」で終わるファイルがアルファ チャネルとしてロードされる。この 2 つ目の bmp の青のチャネルがアルファ チャネルに格納される。
ドキュメントを開いたのちは、[File] メニューの [Open As Alpha Channel] を使用して明示的に bmp ファイルをアルファ チャネルとしてロードできる。
アルファ チャネルを RGB チャネルなしで直接表示するには、[View] メニューから [Alpha Channel Only] を選択する。アルファ チャネルがグレースケール イメージとして表示される。アルファ チャネルがロードされていない場合、アルファ チャネルは全域にわたって 100 パーセントとなり [Alpha Channel Only] を選択するとイメージが白く塗りつぶされるので注意すること。
通常のビューではアルファ チャネルのエフェクトが目に見えるが、これは、ウィンドウがバックグラウンド カラーで塗りつぶされており、アルファ チャネルが 100 パーセント未満のテクスチャでは、そのカラーが透けて見えるからである。バックグラウンド カラーを変更するには、[View] メニューから [Change Background Color] を選択する。この選択を実行しても、テクスチャそのもの、またはファイルを保存するときに書き込まれるデータには影響しない。
DXT2 フォーマットおよび DXT4 フォーマットでは、あらかじめ計算されたアルファが使用される。つまり、サーフェスに格納される赤、緑、および青の値には、対応するアルファ値が既に乗算されている。DirectDraw では、あらかじめ計算されたアルファが含まれるサーフェスからあらかじめ計算されていないアルファが含まれるサーフェスにブリットすることはできない。したがって、処理によって (Alpha Channel として開く、DXT3 への変換 DXT5 への変換) は、DXT2 および DXT4 フォーマットでは実行できない。DXTn テクスチャをサポートしない Direct3D デバイス では、これらのフォーマットを使用したテクスチャをサポートすることは難しい。これは、DirectDraw ではこれらのフォーマットを従来のARGB サーフェスへもブリットを処理できないためである (ARGB サーフェスでもあらかじめ計算されたアルファが使用されている場合はブリットできるが、このような場合はまれである)。したがって、可能であれば DXT2 よりも DXT3 を、DXT4 よりも DXT5 を使用する方が簡単である。
コマンドライン オプションを使用して、入力ファイル、出力ファイル名、および処理オプションを DirectX Texture ツールに渡すことができる。出力ファイル名を指定すれば、その出力ファイルを書き込んだ後にプログラムが自動終了し、ユーザー インターフェイスは表示されない。
dxtex [infilename] [-a alphaname] [-m] [DXT1|DXT2|DXT3|DXT4|DXT5] [outfilename]
DDS ファイル フォーマットの詳細情報については、「Compress サンプル」を参照すること。