Direct3D 12 プログラミング環境のセットアップ
生産性の高い Direct3D 12 開発環境を構成するインストール、ツール、サポートされているライブラリについて説明します。
- 開発環境の
- サポートされている言語 を する
- ヘルパー構造体
- メモリ管理ライブラリの
- サポートされているツールとライブラリの
- サンプル
- デバッグ レイヤーの
- 教育ビデオ
- 関連トピック
開発環境
Direct3D 12 ヘッダーとライブラリは、Windows 10 SDK の一部です。 Direct3D 12 を使用するために個別のダウンロードまたはインストールは必要ありません。
Windows 10 SDK ソフトウェアと Visual Studio をインストールすると、Direct3D 12 プログラミング環境のセットアップが完了します。 D3D12 グラフィックス デバッグ ツールが含まれるため、Visual Studio 2019 をお勧めしますが、以前のバージョンの Visual Studio はプログラム開発に適しています。
Direct3D 12 APIを使用するには、D3d12.h と D3d12.lib へのリンクを含めるか、D3d12.dllでエントリ ポイントに直接クエリを実行します。
次のヘッダーとライブラリを使用できます。 静的ライブラリの場所は、コンピューターで実行されている Windows 10 のバージョン (32 ビットまたは 64 ビット) によって異なります。
ヘッダーまたはライブラリ ファイル名 | 形容 | インストール場所 |
---|---|---|
D3d12.h | Direct3D 12 API ヘッダー | %WindowsSdkDir\Include%WindowsSDKVersion%\um |
D3d12.lib | 静的 Direct3D 12 API スタブ ライブラリ | \Lib%WindowsSDKVersion%\\um\arch を %WindowsSdkDirする |
D3d12.dll | 動的 Direct3D 12 API ライブラリ | %WINDIR%\System32 |
D3d12SDKLayers.h | Direct3D 12 デバッグ ヘッダー | %WindowsSdkDir\Include%WindowsSDKVersion%\um |
D3d12SDKLayers.dll | 動的 Direct3D 12 デバッグ ライブラリ | %WINDIR%\System32 |
サポートされている言語
Direct3D 12 開発でサポートされている言語は C++ のみです。C# およびその他の .NET 言語はサポートされていません。
ヘルパー構造体
特に、多数の D3D12 構造体を簡単に初期化できるようにするヘルパー構造体がいくつかあります。 これらの構造体といくつかのユーティリティ関数は、ヘッダー D3dx12.h にあります。 このヘッダーはオープン ソースであり、必要に応じて開発者が変更できます。D3D12 ヘルパー ライブラリ からダウンロードし、D3D12 のヘルパー構造と関数参照してください。
メモリ管理ライブラリ
メモリ管理ヘルパー ライブラリをダウンロードして、D3D11 メモリ管理の動作とより密接に一致するようにアプリに統合できます。 D3D11 スタイル管理ライブラリとして、コミットされたリソース スタイル割り当て戦略をまだ使用しているアプリで最も効果的です。 特に、ライブラリは、メモリの制約のあるシナリオ (たとえば、ローエンド メモリ カード、4k、Ultra 設定など) で D3D11 のパフォーマンスの高いメモリ管理に戻る方法の大部分を取得する足掛かりと見なす必要があります。 D3D12 API を使用すると、D3D11 よりもメモリ効率を向上させる手法が可能になりますが、これらの手法は実装に困難で時間がかかる場合があります。
このライブラリは進行中の作業であり、時間の経過と伴って変更される可能性があることに注意してください。 ライブラリとサンプルにアクセスするには、次のリンクを使用します。
サポートされているツールとライブラリ
次のライブラリはすべて Direct3D 12 で使用できます。
図書館 | 目的 | ドキュメンテーション |
---|---|---|
DirectX 12 用 DirectX ツール キット | ユニバーサル Windows プラットフォーム (UWP) アプリ、Windows 10 用 Win32 デスクトップ アプリケーション、Xbox One 専用アプリ用の Direct3D 12 C++ コードを記述するためのヘルパー クラスの相当なコレクション。 | DirectX12TK wiki |
DirectXTex の | これは、DDS ファイルの読み取りと書き込み、サイズ変更、フォーマット変換、ミップ マップ生成、Direct3D ランタイム テクスチャ リソースのブロック圧縮、高さマップから標準マップへの変換など、さまざまなテクスチャ コンテンツ処理操作を実行するために使用します。 | DirectXTex wiki |
DirectXMesh の | これは、法線と接線フレームの生成、三角形隣接性の計算、頂点キャッシュの最適化など、さまざまなジオメトリ コンテンツ処理操作を実行するために使用します。 | DirectXMesh wiki を する |
DirectXMath | ベクトル、スカラー、行列、四元数、およびその他の多くの数学演算をサポートする多数のヘルパー クラスとメソッド。 | MSDN で DirectXMath ドキュメントを する |
UVAtlas | これを使用して、isochart テクスチャ アトラスを作成およびパッキングします。 | UVAtlas wiki |
サンプル
動作する D3D12 サンプルの一覧と、それらを検索して実行する方法については、「作業サンプルの」を参照してください。
特定の機能を有効にするコードを追加する方法のチュートリアルについては、「D3D12 Code Walk-Throughsを参照してください。
デバッグ レイヤー
デバッグ レイヤーには、追加のパラメーターと整合性の検証 (シェーダー リンケージとリソース バインドの検証、パラメーターの整合性の検証、エラーの説明の報告など) が用意されています。
手記
Windows 10 では、デバッグ レイヤーをサポートするデバイスを作成するには、"グラフィックス ツール" オプション機能を有効にします。 Windows 10 22H2 で、[設定] パネルの [システム] に移動します。 以前のバージョンの Windows 10 では、[設定] パネルの [アプリ] > [アプリ] & 機能に移動します。 [オプション機能] > [機能の追加] に移動し、[グラフィックス ツール] を探します。
デバッグ レイヤー D3D12SDKLayers.h をサポートするために必要なヘッダーは、d3d12.h から既定で含まれています。
デバッグ レイヤーは、メモリ リークを一覧表示すると、フレンドリ名と共にオブジェクト インターフェイス ポインターの一覧を出力します。 既定のフレンドリ名は "<名前のない>" です。 フレンドリ名は、ID3D12Object::SetName メソッドを使用して設定できます。 通常、これらの呼び出しは実稼働バージョンからコンパイルする必要があります。
デバッグ レイヤーを使用してアプリをデバッグし、エラーと警告がクリーンであることを確認することをお勧めします。 デバッグ レイヤーは、Direct3D 12 コードを記述するのに役立ちます。 さらに、デバッグ レイヤーを使用すると、レンダリング エラーや黒い画面の原因をすぐに確認できるため、生産性が向上する可能性があります。 デバッグ レイヤーには、多くの問題に対する警告が表示されます。 例えば:
- テクスチャを設定するのを忘れたが、ピクセル シェーダーでテクスチャから読み取った。
- 出力深度ですが、深度ステンシル状態はバインドされません。
- INVALIDARG でテクスチャの作成に失敗しました。
コンパイラ定義D3DCOMPILE_DEBUGを設定して、シェーダー BLOB にデバッグ情報を含むように HLSL コンパイラに指示します。
#define D3DCOMPILE_DEBUG 1
すべてのデバッグ インターフェイスとメソッドの詳細については、デバッグ レイヤーリファレンスを参照してください。
デバッグ レイヤーの使用の概要については、「D3D12 デバッグ レイヤーについて」を参照してください。
教育ビデオ
DirectX の高度な学習ビデオ チュートリアルには、グラフィックス デバッグ ツールのビデオやグラフィックスバグの報告など、Direct3D 12 および Windows 10 関連のビデオが多数あります。
関連トピック
-
Direct3D 12 について