次の方法で共有


DXTex ツール

DXTex ツール

説明

Microsoft® DirectX® Texture (DXTex) ツールを使うと、DirectX ソフトウェア開発キット (SDK) ユーザーは新しい DXTn 圧縮フォーマットを使ってテクスチャ マップを作成できる。DXTn で圧縮されたテクスチャの作成は難しくない。ただし、IDirect3DTexture9 インターフェイスを使うと、この変換を Microsoft Direct3D® によって自動的に実行できる。上級の開発者であれば特定のニーズを満たす独自のツールを作成することもできるが、DXTex ツールは便利で基本的な機能を備えている。

機能

  • .bmp および Microsoft DirectDraw® サーフェイス (DDS) ファイルを開く。詳細については、このトピックの「DDS ファイル フォーマット」を参照すること。
  • .bmp ファイルをアルファ チャンネルとして明示的または非明示的に開く。このとき、filename_a.bmp 命名規則を使う。
  • テクスチャを DDS フォーマットで保存する。
  • 5 つの DXTn 圧縮フォーマットすべてへの変換をサポートする。
  • ミップマップの生成をサポートする (ボックス フィルタを使用)。
  • グレースケール イメージまたはユーザーが選択可能な背景色によってアルファ チャンネルの視覚化をサポートする。
  • フォーマットによるイメージ品質の相違を簡単にビジュアル比較できる。

現時点で、DXTex は、R・G・B テクスチャが 1 つでも欠けているサーフェイス フォーマット (D3DFMT_G16R16 や D3DFMT_A8 など) のテクスチャはサポートしていない。ただし、Direct3D エクステンション (D3DX) では、これらのテクスチャも DDS フォーマットでロードおよび保存できる。

パス

ソース ファイル : (SDK ルート)\Samples\Multimedia\Direct3D\DXTex

実行可能ファイル : (SDK ルート)\bin\dxutils

ユーザー インターフェイス

DXTex では、各テクスチャ マップはドキュメントであり、同時に複数のドキュメントを開くことができる、従来の ユーザー インターフェイス (UI) を使用している。ただし、DXTex でドキュメントを開いているときは、各ドキュメントでは 1 つまたは 2 つのフォーマットで同時にテクスチャを使用できる。たとえば、.bmp ファイルをインポートすることができる。これによって、自動的に 32 ビット ARGB テクスチャが作成される。次に、このテクスチャを DXT1 フォーマットに変換する。この時点で、ドキュメントにはイメージが 2 つのフォーマットで開かれている。フォーマットを切り替えるには、ウィンドウをクリックする。[View] メニューの [Original View] または [New View] をクリックして切り替えることもできる。このように操作することで、イメージ圧縮によって生じる不自然な効果を確認でき、イメージの品質を段階的に劣化させることなく別の圧縮フォーマットを簡単に試すことができる。たとえば、この方法を使用せずに、イメージを ARGB から DXT1 に変換すると、アルファの 1 ビットを除くすべてのビットが失われる。

その後 DXT2 に変換しても、アルファ レベルは 2 つしか存在しないことになる。DXTex システムでは、この 2 回目の変換は元の ARGB フォーマットから行われ、変換された DXT2 イメージには、DXT2 がサポートする 16 レベルのアルファがすべて含まれる。このイメージを保存すると、元のフォーマットは破棄されて新しいフォーマットのみが保存される。

DXTex インターフェイスを使用する場合は、次の点に注意すること。

  • ドキュメントが開かれてからフォーマットの変換が要求されなかった場合、その 1 つのフォーマットが元のフォーマットとなり、ドキュメントを保存するとそのフォーマットでイメージが書き込まれる。
  • ドキュメントが開かれてからフォーマットの変換が要求された場合、変換されたフォーマットが新しいフォーマットとなり、ドキュメントを保存するとそのフォーマットでイメージが書き込まれる。
  • 2 回目のフォーマット変換が要求された場合、最初の変換で作成されたフォーマットが 2 つ目のフォーマットに置き換えられる。元のフォーマットは変更されない。
  • ミップマップの生成は、両方のフォーマットに同時に適用される。
  • 元のフォーマットに複数のミップマップがあり、新しいフォーマットへの変換が要求された場合、新しいフォーマットにも自動的に複数のミップマップが存在することになる。

パフォーマンス

DXTex では、3D ハードウェアが使用可能かどうかに関係なく、Direct3D リファレンス ラスタライザを使ってテクスチャを描画する。したがって、テクスチャが大きい (256 × 256 ピクセルを超える) 場合、アプリケーションは CPU の速度に応じて若干遅くなることがある。

DDS ファイル フォーマット

DDS ファイル フォーマットの詳細については、「DDS ファイル リファレンス」を参照すること。

ミップマップ

ミップマップは、複数の解像度であらかじめフィルタ処理されたテクスチャ イメージを提供することによって、画質を向上させ、テクスチャ メモリの帯域幅を減少させる手法である。

DXTex でミップマップを生成するには、ソース イメージの幅と高さがともに 2 の累乗でなければならない。このミップマップを生成するには、[Format] メニューの [Generate Mip Maps] をクリックする。フィルタリングは、単純なボックス フィルタで実行される。つまり、最も近い 4 つのピクセルが平均化されて目的のピクセルが作成される。

アルファ

多くのテクスチャ フォーマットには、各ピクセルの不透明度の情報を提供するアルファ チャンネルが含まれている。DXTex はテクスチャにおけるアルファを完全サポートする。.bmp ファイルをインポートする場合に、サイズが同じ 2 つのファイルが存在し、その一方のファイル名が "_a" で終わるときには (Sample.bmp および Sample_a.bmp など)、"_a" で終わるファイルがアルファ チャンネルとしてロードされる。この 2 つ目の .bmp の青のチャンネルがアルファ チャンネルに格納される。ファイルを開くと、[File] メニューの [Open As Alpha Channel] をクリックして、明示的に .bmp ファイルをアルファ チャンネルとしてロードできる。

アルファ チャンネルを RGB チャンネルなしで直接表示するには、[View] メニューの [Alpha Channel Only] をクリックする。アルファ チャンネルがグレースケール イメージとして表示される。アルファ チャンネルがロードされていない場合、すべてのピクセルでアルファ チャンネルは 100 パーセントとなり、[Alpha Channel Only] を選択するとイメージが白く塗りつぶされる。アルファ チャンネルを非表示にするには、[Alpha Channel Only] をもう一度クリックする。

通常のビューではアルファ チャンネルの効果が目に見えるが、これは、ウィンドウがバックグラウンド カラーで塗りつぶされており、アルファ チャンネルが 100 パーセント未満のテクスチャでは、その色が透けて見えるからである。バックグラウンド カラーを変更するには、[View] メニューの [Change Background Color] をクリックする。この選択を実行しても、テクスチャそのもの、またはファイルを保存するときに書き込まれるデータには影響しない。

DXT2 フォーマットおよび DXT4 フォーマットでは、あらかじめ計算されたアルファが使われる。つまり、サーフェイスに格納される赤・緑・青の値には、対応するアルファ値が既に乗算されている。Direct3D では、あらかじめ計算されたアルファが含まれるサーフェイスからあらかじめ計算されていないアルファが含まれるサーフェイスにコピーすることはできない。したがって、DXTex の一部の処理 (アルファ チャンネルとして開く、DXT3 への変換、DXT5 への変換) は、DXT2 および DXT4 フォーマットでは実行できない。DXTn テクスチャをサポートしない Direct3D デバイス では、これらのフォーマットを使ったテクスチャをサポートすることは難しい。これは、Direct3D ではこれらのフォーマットを従来の ARGB サーフェイスにもコピーできないためである。ARGB サーフェイスでもあらかじめ計算されたアルファが使用されている場合はコピーできるが、このような場合はまれである。このような理由から、可能であれば DXT2 より DXT3 を、DXT4 より DXT5 を使用する方が簡単である。

コマンドライン オプション

コマンドライン オプションを使って、入力ファイル、出力ファイル名、および処理オプションを DXTex に渡すことができる。出力ファイル名を指定した場合は、その出力ファイルを書き込んだ後にアプリケーションが自動終了し、ユーザー インターフェイスは表示されない。

dxtex [infilename] [-a alphaname] [-m] [DXT1|DXT2|DXT3|DXT4|DXT5] [outfilename]

infilename:               Name of the file to load.  This can be a
                            .bmp or .dds file.

-a alphaname:             The next parameter is the name of a .bmp 
                            file to load as the alpha channel. If no 
                            alpha filename is specified, DXTex still
                            looks for a file named Infilename_a.bmp. If 
                            it exists, use that file as the alpha 
                            channel.

-m:                       Mipmaps are generated.

DXT1|DXT2|DXT3|DXT4|DXT5: Compression format. If no format is 
                            specified, the image will be in ARGB-8888.

outfilename:              Name of the destination file. If this 
                            option is not specified, the user interface 
                            shows the current file and all requested 
                            operations.  If an outfilename is specified, 
                            the application exits after saving the 
                            processed file without presenting a user 
                            interface.