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