2DゲームでDX10 / 11を使用することに何か利点はありますか?


10

私はDX10 / 11クラスのハードウェアによって導入された機能セットに完全に精通していません。ジオメトリシェーダー、計算シェーダー、新しいテッセレーションステージなど、プログラム可能なグラフィックスパイプラインに追加された新しいステージについては、漠然と精通しています。しかし、これらのどれが2Dゲームの違いを大きく変えるかはわかりません。

2DゲームをDX10 / 11(またはOpenGLの同等物)に切り替える説得力のある理由はありますか、または市場のかなりのシェアが古い技術(例: 2012年2月のSteam調査では、約17%のユーザーがまだWindows XPを使用していると回答しています)?

回答:


5

それはあなたが何をしているかに依存します。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の問題に対処する必要があります。


5

考慮すべき点がいくつかあります。

  • 十分にテストされたD3D9エンジンを使用している場合、新機能を利用しないのであれば、D3D11に移植する価値はないでしょう。ゼロから始めるとき、D3D11ははるかに魅力的です。

  • ゲームのリリース日はいつですか?XPはわずか2年でサポートが終了します。XPのインストールベースが急速に低下しているという履歴データを見ると(Steamの場合、1%程度/月)。

  • XPユーザーの17%のうち、D3D9でのゲームの最小仕様を満たすPCをどのくらいの割合で使用するかを検討してください。それが高いほど、それらをサポートする価値があります。

  • DX10は、新しい開発に使用してもほとんど無意味です。DX11は(機能レベルを介して)同じオペレーティングシステムおよびハードウェアで実行されます。

  • DX11は、フォールバックデバイスとしてソフトウェアレンダラー(WARP)をサポートしています。これは、GPU要件が低いゲームを実行するのに十分な速さです。

  • ネイティブDX9は、D3D9機能レベルのいずれかを使用している場合、D3D11よりも多くの機能をサポートします。ありがたいことに、DX10対応PCのDX9ハードウェアはまれです。

  • DX10 / 11ハードウェアの機能はそれほど多様ではないため、DX9ハードウェアでWARPを使用する場合、2のべき乗以外のテクスチャやぎこちないテクセルピクセルマッピングなどのぎこちない制限について心配する必要はありません。

  • ゲームがハードウェアを多用する場合、DX11にはパフォーマンスを向上させるための追加のトリックがいくつかあります。たとえば、描画コードのマルチスレッド化。


機能レベルについて少し混乱しています。DX11を使用して開発しているが、DX9機能レベルをターゲットにしている場合、DX9ハードウェアで実行できることを理解しています。しかし、それでもDX11ランタイムが必要ですか?つまり、Windows XPで実行されますか?
David Gouveia

DX11はXPではまったく機能しません。機能レベルの機能は、古いハードウェアでDX11 APIを使用できるようにすることです。各機能レベルでできることの詳細については、msdn.microsoft.com / en-us / library / ff476876%28v = vs.85%29.aspxを確認してください
Adam

1

多数のパーティクルまたはスプライトを使用する予定がある場合は、ジオメトリシェーダーだけがD3D10 / 11を使用する理由です。

DirectComputeは、速度を向上させるためにも使用できます。

個人的には、D3D10 / 11のはるかにクリーンで優れたAPIを持つだけで、最新のWindowsのみのプロジェクトでD3D9やOpenGLに再び触れることはありません。ただし、現実的には、GL | ESを使用してモバイルデバイスをターゲットにする必要があり、まだかなりのWinXPの群衆がいるため、D3D10 / 11を避け、D3D9またはOpenGLのいずれかに固執する必要があります。

OpenGLルートを使用すると、WinXPでもジオメトリシェーダー、OpenCL、およびその他の新しいハードウェア機能を利用できることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.