D3D12 コードのチュートリアル

このセクションでは、サンプル シナリオのコードを示します。 チュートリアルの多くで、シナリオごとに基本的なコンポーネント コードを繰り返さないようにするために、基本的なサンプルにどのようなコーディングを追加する必要があるかについて詳しく説明します。

最も基本的なコンポーネントについては、「基本的なDirect3D 12コンポーネントの作成」セクションを参照してください。 次のチュートリアルでは、より高度なシナリオについて説明します。

このセクションの内容

トピック 説明
D3D11on12 を使用した D2D
D3D1211on12 のサンプルでは、11 ベースのデバイスと 12 ベースのデバイス間でリソースを共有することで、D3D12 コンテンツ上に D2D コンテンツをレンダリングする方法を示します。
マルチエンジンの N 体重力シミュレーション
D3D12nBodyGravity サンプルでは、計算作業を非同期的に行う方法を示します。 このサンプルでは、それぞれが計算コマンド キューを持つスレッドの数をスピンアップし、n 体重力シミュレーションを実行する GPU 上で計算作業をスケジュールします。 各スレッドは、位置とベロシティのデータで埋まった 2 つのバッファーで動作します。 各反復で、計算シェーダーが一方のバッファーから現在の位置とベロシティのデータを読み取り、次の反復をもう一方のバッファーに書き込みます。 反復が完了すると、計算シェーダーは、位置/ベロシティのデータを読み取るための SRV であるバッファーと、位置/ベロシティの更新を書き込むための UAV であるバッファーを入れ替えるために、各バッファーでリソースの状態を変更します。
プレディケーション クエリ
D3D12PredicationQueries サンプルでは、DirectX 12 クエリ ヒープとプリディケーションを使用したオクルージョン カリングを示します。 このチュートリアルでは、準備クエリを処理するために HelloConstBuffer サンプルを拡張するために必要な追加のコードについて説明します。
HLSL 5.1 を使用した動的インデックス作成
D3D12DynamicIndexing サンプルでは、シェーダー モデル 5.1 で使用できる新しい HLSL 機能 (特に動的インデックス作成と無制限の配列) の一部を示し、動的に選択されたマテリアルを使用して同じメッシュを複数回レンダリングします。 動的インデックス作成により、シェーダーはコンパイル時にインデックスの値を認識していなくても配列にインデックスを作成できるようになりました。 これを無制限の配列と組み合わせることで、シェーダー作成者とアート パイプラインに新たなレベルの間接化と柔軟性がもたらされます。
間接的な描画と GPU の選別
D3D12ExecuteIndirect サンプルでは、間接コマンドを使用してコンテンツを描画する方法を示します。 また、これらのコマンドを、実行前に GPU の計算シェーダーでどのように操作できるかを示します。

Direct3D 12 プログラミング ガイド

DirectX 上級学習者向けチュートリアル ビデオ

D3D12 リファレンスでのコード例

実用的なサンプル