D3D プログラミングの初心者は、D3D12 を直接学習する必要がありますか、それとも D3D12 に飛び込む前に D3D11 が必要ですか?
ゼロから始めて、C++ の十分な知識があると仮定すると、どの方法を使用すればよいでしょうか?
D3D プログラミングの初心者は、D3D12 を直接学習する必要がありますか、それとも D3D12 に飛び込む前に D3D11 が必要ですか?
ゼロから始めて、C++ の十分な知識があると仮定すると、どの方法を使用すればよいでしょうか?
この質問には以前回答したことがありますので、そちらの記事をご覧ください。
つまり、Direct3D 12 は「DirectX Extreme Pro」と考える必要があります。Direct3D 11 ランタイムがどのように機能するかについて、基本的には自分で記述できる程度の専門知識があることを前提としています。ミドルウェア エンジンと低レベルのグラフィックス開発者が GPU の動作を最大限に制御できるように設計されています。Direct3D 11 も「低レベル」のグラフィックス API ですが、DirectX 12 の抽象化は非常に薄いため、最新の GPU の多くの複雑さがアプリケーション プログラマーに直接公開されています。Direct3D 11 が隠している複雑さ。
Direct3D 12 は非常に強力ですが、CPU オーバーヘッドを非常に低く抑えるために、API とランタイムはほとんど役に立ちません。これにより、ドライバーのメモリ モデルが公開され、GPU/CPU 同期が、CPU の「ロックフリー プログラミング」に少し似た手動プロセスになります。
Direct3D をまったく初めて使用する場合は、DirectX ツール キットと、Direct3D 11 を使用したそのチュートリアルから始めることを強くお勧めします。それをマスターしたら、アプリケーションにとって意味があるときに Direct3D 12 に移行するのに適した場所にいるはずです。 .
Direct3D 11 に関するチュートリアル、サンプル、書籍、およびその他の教育資料がたくさんあります。私は現在DirectX Tool Kitに DirectX 12 サポートを追加する作業を行っていますが、利用可能になったとしても、Direct3D 11 から始める方が、最初から DirectX 12 に飛び込むよりもはるかに簡単であることがわかります。
DirectX 12 に関して留意すべきもう 1 つの点: DirectX 12 対応のビデオ ドライバーを備えた Windows 10 システムでのみサポートされます。これには、NVIDIA Fermi、Kepler、Maxwell など、ほとんどのDirect3D 機能レベル11.0+ ハードウェアが含まれます。AMD GCN; Intel の Haswell、Broadwell、および Skylake。ただし、これには古いビデオ カードは含まれません。DirectX 12: A Major Stride for Gaming、AMD DirectX 12 Technology、およびDirectX Developer Blogを参照してください。
更新: DirectX 12 用の DirectX ツール キットが利用可能になり、基本的なチュートリアルが含まれています。Direct3D 12 に取り組む前に、Direct3D 11 の学習に集中する必要があります。DirectX 12 は、グラフィックスの専門家向けに設計された API であり、初心者には非常に厳しいものです。DirectX ツール キットは、エッジを少し柔らかくするのに役立ちますが、それほどではありません。一般的に言えば、Direct3D 11 の CPU パフォーマンスの限界に達していない限り、Direct3D 12 を使用する必要はありません。ハードウェアをパフォーマンスの限界まで。
更新 2:最近の経験に基づいて、DirectX ツール キットで提供される機能 (スプライト、スプライトフォント、基本的なプリミティブとモデルなど) を主に使用する場合、DirectX 11 から DirectX 12 バージョンへの切り替えはかなり適切であることに言及する必要があります。率直に。また、DirectX Raytracing 、DirectML、またはShader Model 6を使用する場合は、DirectX 11 の代わりに DirectX 12 を使用する必要があります。これらの場合の使いやすさではなく、ターゲットプラットフォームの問題です。