回答:
それは、3年後、1年後、6か月後のゲームを作成するエンジンを設計するかどうか、そしてコンソールポートを考えているかどうかによって異なります。Direct3D9からゲームの360ポートを捨てるのは比較的簡単ですが、D3D11からさらに多くのことを行う必要があります。D3D11は、必ずしもすべてのD3D9ハードウェアではないにしても、すべてのXPユーザーをロックアウトすることに注意してください。
最新のSteam調査では、約16%の人々がまだWindows XPを使用していることが示唆されています。それらを切り取る余裕はありますか?ゲームが完了するまでに、これはどのように変化しますか?より高いレベルのAPIに依存する機能を使用しますか?これらはあなた自身に答える必要がある質問です。
Direct3D 9は非常にアクセスしやすく、D3D9ゲームで多くの人にリーチできますが、特にPC上では数日が経過しています。あなたがそれらの人々を標的にすることに興味がないなら、それはほとんど意味がありません。
ああ、そしてDX10に悩まないでください。DX11で使用する理由はまったくありません。不合理ではないD2D / DirectWriteを使用する場合を除きます。
もちろん、DX11には、趣味の専門家としてDX9で非常に役立つクラスに代わるものはありません。ID3DXMesh、ID3DXSprite、ID3DXFontなどは、ソースなどからID3DXEffectをコンパイルする必要があります。Microsoftは、ID3DXFontを置き換えるためにDirectWriteを推奨していますが、もちろん、私は、 。
tldr:D3D11を学んでください。
10と11の違いは、APIの形に関してはごくわずかです。D3D11では、ダウンレベリングを使用して、D3D9クラスのハードウェアに戻るまで実行されるD3D11 APIに対してコードを記述することができます(ただし、Vista以上が必要です)。したがって、新しいAPIを学ぶこともできます。それは、とにかく、よりクリーンで、より均一であると感じています。
ただし、Vista以降をお持ちでない場合、または最終的に(たとえば、ゲームをXPユーザーに配布するために)XPで独自のコードを実行する場合は、D3D9を使用する必要があります。ただし、XP市場はおそらく縮小しているので、可能であれば11に移行することをお勧めします。
3Dプログラミングを初めて使用する場合、特にCOMおよびWindowsプログラミングを初めて使用する場合は、今すぐDirectXを学ぶことを強くお勧めします。私の経験では、DirectXは非常に強力なツールですが、非常に急な学習曲線を持っています。Windowsプログラミング、3Dプログラミング、その他多くの学習曲線に加えて考慮する必要があります。DirectXから始めると、定型コードの作成に関するすべての詳細に圧倒されるかもしれません。
代わりに、3Dプログラミングについての学習により集中できる、よりシンプルなAPIをお勧めします。XNAは非常に優れており、DirectXの上にあるため、DirectXに移行すると、DirectXの学習曲線をはるかに簡単にするためのアイデアが得られます。
OpenGLなどの3Dプログラミングの経験があり、COMプログラミングの方法を知っているなら、DirectX 11をお勧めします。最新バージョン以外は時代遅れであり、それから得られる経験はすべて有用です。より短い期間。
しかし、繰り返しますが、真の経験は多様性から得られるので、DirectXとOpenGLの両方を学び、必要に応じてXNAを学び、できるだけ多くのAPIを学ぶことをお勧めします。そうすれば、3Dプログラミングがさまざまなツールでどのように機能するかについての抽象的な知識が得られ、各ジョブに適切なツールを使用できるようになります。
DX11またはDX10をお勧めします。違いは非常に小さいです。DX11でもっと多くのことができます(ハードウェアテッサレーション、優れたgpgpu、ピクセルシェーダーの複数のテクスチャへの出力..)。DirectX 9には別のアーキテクチャがあり、現時点では少し時代遅れです。現在のゲーム開発業界について質問している場合、現在開発中のPCゲームはDX9で死んでいます。
しかし、私は言わなければならない:
apiを気にしないでください、グラフィックがどのように機能するかを本当に理解したら、新しいapiの学習には最大1か月かかります。さらに短い時間。