ぼく用あれこれまとめ

D3DX はどこへ消えた?(DirectXTK と DirectXTex を導入する)

最終更新:

bokuyo

- view
管理者のみ編集可

D3DX はどこへ消えた?(DirectXTK と DirectXTex を導入する)

  • 別途 DirectX SDK をインストールせずとも、Windows SDK 8.0 に含まれるようになったため DirectX を扱うのが楽になりました。
    • ちなみに、Windows SDK 8.0 は Visual Studio 2012 と一緒にインストールされます。
  • 次のページに、Windows SDK に含まれるようになった DirectX SDK について説明があります。
  • 上記のページを見ると、D3DX を使ったプログラムに関してはがんばって対処する必要がある、とあります。
    • というのも、D3DX は Windows SDK 8.0 に含まれる DirectX SDK では廃止されたからです。

今まで D3DX を使ってた人はどうすればいいのか。

解決案(1) DirectX SDK を別途インストールして使う

  • Where is the DirectX SDK? にあるように D3DX を使う場合は、今までのように DirectX SDK を使ってください。
  • warning C4005 が出るので、pragma プリプロセッサを使って、見なかったことにするといいでしょう。
#pragma warning(push)
#pragma warning(disable : 4005) 
#include <d3d11.h>
#include <d3dcompiler.h>
#include <d3d11shader.h>
#pragma warning(pop)
 
// Direct3D extension.
#if ( _MSC_VER > 1000 )
#	pragma comment(lib, "d3dx11.lib")
#endif
 
#pragma warning(push) 
#pragma warning(disable : 4005) 
#include <D3DX11.h>
#pragma warning(pop)

解決案(2) DirectXTK, DirectXTex を使って D3DX を置き換える

  • Where is the DirectX SDK? によると「代わりに、DirectX Tool Kit と、DirectXTex を使ってね」ということなので置き換えて使いましょう。
  • ちなみに D3DX の数学系ライブラリの場合は XNAMath で置き換えることが可能です。
    • XNAMath は DirectXTex に含まれているのでそっち使ってもおっけー

DirectX Tool Kit(DirectXTK) のインストール


DirectXTex のインストール

  • 下記ページよりダウンロード
  • 解凍したフォルダに、ソリューションファイルがあるのでそれを開いてそのままビルドすればライブラリファイル "DirectXTex.lib" は出来上がります。

例:D3DX を DirectXTex に置き換える

  • D3DX を使ってテクスチャを読み込んでる方も多いでしょう。おそらく D3DX が使えなければ次のようなエラーが出ます。
error C3861: 'D3DX11CreateTextureFromFile': 識別子が見つかりませんでした
  • このエラーに対処するべく DirectXTex を使います。

方法

  • DirectXTex の中に、DDSTextureLoader というのが用意されてます。
  • DDSTextureLoader.h, DDSTextureLoader.cpp をそのまま使用したいプロジェクトファイルに追加しちゃってください。
  • D3DX.h の代わりに、DDSTextureLoader.h をインクルードしましょう

使用する前にターゲット OS を明示的に指定

  • 設定の方法は、Visual Studio 上から プロジェクトのプロパティ -> 構成プロパティ -> C/C++ -> プリプロセッサ -> プリプロセッサの定義
 _WIN32_WINNT=0x0600
  • Windows 8 をターゲットにする場合は、0x602 を設定します。
  • 同様に、Windows 7 の場合は 0x601, Vista で動かしたい場合は、0x600 などを設定してください。
  • 詳しくは次の記事を参照:

エラー:D3DCOMPILER_46.dll がない

コンピューターに D3DCOMPILER_46.dll がないため、プログラムを
開始できません。この問題を解決するには、プログラムを再インスト
ールしてみてください。

解決策

  • 実行ファイルと同じフォルダに D3DCOMPILER_46.dll をいれる
    • ファイル検索すれば、Windows SDK 内で発見できると思います。

ちなみに

記事メニュー
目安箱バナー