Direct3D 9、10、または11を学習する必要がありますか?[閉まっている]


14

Direct3Dを使用した3Dプログラミングを始めようとしています。どのバージョンのD3Dを選択すればよいですか?

11はきれいに見えますが、9と10はまだかなり存在しているようです。ゲーム開発業界の現在の状況を考えると、どのバージョンを使用し始める方が理にかなっていますか?


「どの技術を使用するか」という質問は、質の良いQ / Aの質問ではありません。
マイケルハウス

回答:


12

それは、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を推奨していますが、もちろん、私は、 。


なぜ彼らはエフェクトフレームワークを削除したのですか?非常に便利なクラスのIMOでした。
dotminic

@__dominic:削除されませんが、自分でコンパイルする必要があります。
-DeadMG

1
@__dominic:DeadMGが指摘したように、エフェクトフレームワークは削除されず、自分でコンパイルできるコードファイルのスタンドアロンセットに組み込まれました。展開の問題を緩和します(特にD3DX周辺)。

1
XPユーザーの25%を削減するよりも悪いのは、DX11 GPUを持っているのは17%だけだということです(現在)。
-DMan

2
@DMan:D3D11は、D3D9ハードウェアを含むダウンレベルハードウェアで実行できます。
DeadMG

9

tldr:D3D11を学んでください。

10と11の違いは、APIの形に関してはごくわずかです。D3D11では、ダウンレベリングを使用して、D3D9クラスのハードウェアに戻るまで実行されるD3D11 APIに対してコードを記述することができます(ただし、Vista以上が必要です)。したがって、新しいAPIを学ぶこともできます。それは、とにかく、よりクリーンで、より均一であると感じています。

ただし、Vista以降をお持ちでない場合、または最終的に(たとえば、ゲームをXPユーザーに配布するために)XPで独自のコードを実行する場合は、D3D9を使用する必要があります。ただし、XP市場はおそらく縮小しているので、可能であれば11に移行することをお勧めします。


3

3Dプログラミングを初めて使用する場合、特にCOMおよびWindowsプログラミングを初めて使用する場合は、今すぐDirectXを学ぶことを強くお勧めします。私の経験では、DirectXは非常に強力なツールですが、非常に急な学習曲線を持っています。Windowsプログラミング、3Dプログラミング、その他多くの学習曲線に加えて考慮する必要があります。DirectXから始めると、定型コードの作成に関するすべての詳細に圧倒されるかもしれません。

代わりに、3Dプログラミングについての学習により集中できる、よりシンプルなAPIをお勧めします。XNAは非常に優れており、DirectXの上にあるため、DirectXに移行すると、DirectXの学習曲線をはるかに簡単にするためのアイデアが得られます。

OpenGLなどの3Dプログラミングの経験があり、COMプログラミングの方法を知っているなら、DirectX 11をお勧めします。最新バージョン以外は時代遅れであり、それから得られる経験はすべて有用です。より短い期間。

しかし、繰り返しますが、真の経験は多様性から得られるので、DirectXとOpenGLの両方を学び、必要に応じてXNAを学び、できるだけ多くのAPIを学ぶことをお勧めします。そうすれば、3Dプログラミングがさまざまなツールでどのように機能するかについての抽象的な知識が得られ、各ジョブに適切なツールを使用できるようになります。


2

DX11またはDX10をお勧めします。違いは非常に小さいです。DX11でもっと多くのことができます(ハードウェアテッサレーション、優れたgpgpu、ピクセルシェーダーの複数のテクスチャへの出力..)。DirectX 9には別のアーキテクチャがあり、現時点では少し時代遅れです。現在のゲーム開発業界について質問している場合、現在開発中のPCゲームはDX9で死んでいます。

しかし、私は言わなければならない:
apiを気にしないでください、グラフィックがどのように機能するかを本当に理解したら、新しいapiの学習には最大1か月かかります。さらに短い時間。


3
DX9は時代遅れではありません。XPにはまだ多くの潜在的なユーザーがいます。これはもう開発されていない可能性があり、今後数年間で時代遅れになるでしょうが、今のところはそうではありません。
共産主義のダック

1
@thecommunistduck私は同意しますが、DX9はそれを学ぶために完全に時代遅れです。一度それを今学び始めた初心者は、それをよく知っているので...それは時代遅れになります。そして、私は答えでそれを悪いと言ったに違いない。
ノタベネ

-5

win xpシステムを備えたdx9は、シングルコアベースのシステムだと聞きました。それは古い技術です。dx11をお勧めします。


3
この答えは生産的なものを追加するものではなく、「シングルコアシステム」に関してあなたが提案していることは不明確です(そして潜在的に間違っていて誤解を招く可能性があります)。

1
さらに、「聞いたことがある...」は、信頼できる証拠源ではありません(または、ほとんど何でも)。
マキシマスミニマス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.