それはあなたが何をしているかに依存します。Direct3Dを使用している場合、切り替える唯一の理由は、他の方法では取得できないハードウェア機能にアクセスすることです。
2Dゲームの場合、理論的には特定の機能に興味を持つ可能性があります。たとえば、OpenCLまたはDirectCompute。Civilization Vは、DirectComputeを使用してテクスチャを解凍します。圧縮データをロードするだけでよいので、これによりロード時間が大幅に短縮されます。また、2Dゲームには多くの画像が含まれています。ロード時間が問題になる場合は、これが役立つことがあります。
OpneCLは、GeForce 8xxx以上のすべてのハードウェアで利用できる必要があります。ATIでは、HD 4xxx以上のハードウェアで利用できます。
DX11で使用できる最大の機能は、シェーダーでイメージをより自由に読み書きできることです。これは、特定の特殊効果に役立ちます。今は考えられません...これがどれほど重要であるかを教えてくれるはずです。
一般的に、D3Dを使用している場合、おそらくそれほどの効果は得られないと思います。そして、もしあなたがまだ新機能が何であるかを理解しておらず、それらをあなたのゲームで使用したいのであれば、あなたはほとんど確実に多くを得ることはありません。それらのほとんどはより複雑になります。
OpenGLは1つの主な理由で異なります。OpenGL 2.1(D3D9とほぼ同等)は、APIとしてはうんざりです。OpenGL 3.3(および3.3ハードウェアで実行される最近の拡張機能)では、APIが大幅に改善されています。明示的な属性の場所、シェーダープログラムの分離、シェーディング言語パック420のすべてなど。
これらの一部は、2.1に対して拡張形式で十分に機能します。それらのいくつかは...しないでください。attribute
(現在のin
構文の前に)宣言で明示的な属性の場所を使用してもよいかどうかはまだわかりません。シェーディング言語パック420は、1.30より前のGLSLバージョン(別名:OpenGL 3.0)では機能しないと明確に述べています。
GL 2.1が使用できないと言っているのではありません。それは確かに機能的で実用的で、ただ楽しくはありません。ただし、それを実装しているドライバーの中には、保守できないものもあります。ATIのDX9ハードウェアはサポートされなくなったので、それらのドライバーは本当にバグがあります。また、Intel は OpenGLを気にしていませんでした。そのため、ハードウェアでシェーダーを使用するのは困難です。
しかし、個人的には、意図したユーザーベースで許可されている場合、OpenGLを使用している場合はGL 3.3にプッシュします。そうでない場合は、2.1の問題に対処する必要があります。