DirectXTex - yoshimune/LearningDirectX11 GitHub Wiki

DirectX 11 には画像ファイルからテクスチャを読み込む関数がありません。そこで、 DirectXTex というライブラリを使用して、DirectX11に適した画像ファイルの生成とテクスチャの読み込みを行います。

DirectXTexは.DDSファイルの作成・読み込みをおこなうためのライブラリです。値サイズ、フォーマット変換、ミップマップ生成、Direct3Dのためのブロック圧縮、ハイトマップをノーマルマップに変換する、なども行います。このライブラリはWindows Image Component(WIC)APIを使用しています。

DirectXTex vs DirectX Tool Kit

DirectXTex ライブラリは、洗練されたDDSファイルを読み込む機能を含んだ完全なテクスチャプロセッシングライブラリとしてデザインされいます。この読み込み機はいくつかの古いフォーマットを読み込み、自動で必要な変換を行うことができます。これはツールとコンテンツパイプライン内で極めて有用です。しかし、ゲームや他のアプリケーションの実行時に本当に必要なのは「調理済みの」テクスチャです。

代わりに、ゲームまたはアプリケーションはDDSTextureLoaderまたはWICTextureLoaderの使用が推奨されます。これらのモジュールは、.dds.bmp.png.gif.jpg.tifとJPEG-XR / HDPhotoの軽いバージョンのテクスチャ生成を提供します。

これらのモジュールは_DirectX Tool Kit_と_DirectXTex_に含まれています。

DirectXTexの使い方

DirectXTexライブラリをダウンロードする

https://github.com/Microsoft/DirectXTex
上記のプロジェクトをクローンします。

DirectXTexライブラリをビルド

クローンしたプロジェクトにはいくつかのVisualStudioソリューションファイルが含まれています。自身の環境にあったソリューションファイルを開きます。

ビルドが成功すると、DirectXTex/Binフォルダ配下に DirectXTex.lib ファイルが作成されます。

自身のプロジェクトへライブラリを追加

VisualStudioでプロジェクトを開き、[プロジェクト(P)]→[プロパティ(P)]を開きます。 [C/C++]→[全般]→[追加のインクルードディレクトリ] を編集し、DirectXTex.h があるフォルダを追加します。

次に、 [リンカー]→[全般]→[追加のライブラリディレクトリ]DirectXTex.lib があるフォルダを追加します

テクスチャを用意する(Texconv)

ゲームに合わせたテクスチャを作成する方法について述べます。DirectXTexプロジェクトに含まれるTexconvという機能を使います。

Texconvは、ランタイム中で使われるテクスチャファイルのロードと用意を行います。リサイズ、フォーマット変換、ミップマップ生成、ブロック圧縮、ランタイムで使用するのに適した形式にテクスチャを書き出す、などを行います。

キューブマップ、ボリュームマップ、テクスチャ配列を個別のファイルから生成する場合は Texassemble を使用します。

Texconv をダウンロードする

Microsoft/DirectXTex/Releasesから texconv.exe をダウンロードします。

.DDS ファイルを作成する

とりあえず、今回は.DDSファイルの作成だけやってみます

texconv -r sample.png -f RGBA
  • texconv.exeにパスを通すか、texconv.exeファイルがある場所で実行してください。
  • -r sample.png : 変換元のファイルを指定しています
  • -f RGBA : 変換後のフォーマットを指定しています。

変換に成功したらsample.DDSファイルが生成されていると思います。このファイルをVisualStudioプロジェクトに追加してください。

参考

DirectXTex
Microsoft/DirectXTex
~プログラミング~ DirectXTexライブラリを導入しよう

Texconv
Texconv