OpenGLよりもDirect3Dを選ぶ理由はありますか?


10

私が読んでいたので、これを、私は一種の他のどのOSよりも、MicrosoftのWindows上でより多くのゲームがある理由を得ました。提示された主な問題は、Direct3DがOpenGLよりも優先されることでした。

開発者が互換性を犠牲にするのはなぜですか?それは単に会社の財務上の損失です。OpenGLはごちゃごちゃのようなものですが、専門家にとってそれが問題になることはまずないでしょう。たとえそれがあったとしても、人々は経済的損失を被るよりも一歩進んでいくと思います。

また、私が間違っていなければ、多くのクロスプラットフォームアプリケーションがDirect3DとOpenGLの両方を使用します。APIを切り替えると思います。

彼らがOpenGLを使用できるのでこれは奇妙です、なぜDirect3Dまで気にかけるのですか?

だから問題は、OpenGLに技術的な問題があるのか​​、それともOpenGLに欠けているDirect3Dのサポートがあるのか​​ということです。


この質問はトピックから外れている、または範囲が広すぎるとして閉じられている可能性があることを認識しています。絞り込んでみました。


これとは違うものをお探しですか?
trichoplax


1
:ここにあなたの質問に答えるみかん歴史の良い教訓だprogrammers.stackexchange.com/questions/60544/...
ダリウス

1
@NathanReed 「つまり、WindowsでOpenGLを使用するマルチプラットフォーム開発者に戻る可能性があります。」そして今、3年後、これは起こったと思いますか?
Rotem

2
@Rotem私はそうは思いません、いいえ。今日のOGL(現在はVulkan)は、D3Dと同等の機能を維持するのに優れていますが、AFAICT、GPUベンダーはバグ修正とパフォーマンスの向上のためにD3Dドライバーを優先しており、ほとんどのゲーム/エンジンはWindowsのデフォルトでD3Dを使用しています。注目すべき例外はidTech enginesで、すべてWindowsでOGLを使用しています。
ネイサンリード

回答:


9

Windows用のゲームがもっとあるという事実について、いくつかの理由があります

  1. Windowsは市場の大半を占めており、これまでクロスプラットフォームゲームの開発は、現在よりも複雑でした。
  2. DirectXには、開発(デバッグなど)のための優れたツールが付属しています
  3. 大きなイノベーションは、通常、最初にDirectXで作成/実装され、次にOpenGLに移植/実装されます。
  4. WindowsとLinuxについては、マーケティングや歴史的な理由による実際の標準がある場合(ゲーム開発者なぜWindowsを好むのか|コメントで述べたソフトウェアエンジニアリングを参照)、慣性があることを考慮する必要があります。

慣性の事は非常に重要です。チームがDirectX向けに開発し、市場の90%をターゲットにしている場合(まあ... PCでゲームをプレイしている場合、おそらくウィンドウがあるので...市場の99%ですか?)、なぜOpenGLに投資したいですか?すでにOpenGLで開発していて、再び市場の99%をターゲットにしている場合は、できる限りそれを使用します。たとえば、Id SoftwareのId Techは、OpenGLを使用する優れたゲームエンジン(DOOMシリーズの原動力)です。

ディスカッションのトピックについて、コメント。

現在、多くのAPIがあり、それらを抽象化するゲームエンジンを使用するのが一般的です。たとえば、

  • ほとんどのモバイルプラットフォームでは、OpenGl ESを使用する必要があります。
  • PCでは、DirectXとOpenGLの両方を使用できます
  • XBOXではDirectXを使用する必要があると思います。
  • PSでは独自のAPIを使用すると思います。
  • 古いハードウェアでは、DirectX9またはOpenGL 3、あるいはOpenGL ES 2を使用します。
  • 最近のハードウェアでは、DirectX 11、OpenGL 4、OpenGL ES 3を使用できます(使用したい)。

最近、新しい低オーバーヘッドAPIの登場により、グラフィカルプログラミングの大きなターニングポイントとなっています。WindowsおよびXBOX用のDirectX 12、iOS用のMetal、WindowsおよびLinux用のVulkan(新しいOpenGL)(AndroidおよびTizenを含む)があります。 )。

WindowsとXBOXのみを対象とするゲームはまだありますが、今日の私見はマーケティングの選択肢にすぎません。


したがって、Direct3Dを優先するパフォーマンス上の理由はありませんか?
A --- B

@ritwik sinha DirectX 11は、OpenGL 4よりもマルチスレッドレンダリングのサポートが優れていますが、私の知る限り、実際のパフォーマンスの違いはありません。一方、WindowsとDirectX 11、LinuxとOpenGL 4を比較すると、勝者はLinuxとOpenGLでした。DirectX 12対Vulkanについては、まだ時期尚早だと思いますが、わかりません。
ダリアス2016年

Direct3Dで作業したことがないので、マルチスレッドの意味がわかりません。私が知る限り、さまざまなスレッドがプログラマによってさまざまなタスクのために処理されます。Direct3Dはこれを内部で実行しますか?とにかくいい答え。
A --- B

1
@ritwik sinhaリアルタイムグラフィックスへのマルチスレッドのアプリケーションは、メインスレッドが描画呼び出しを行う間に、異なるスレッドを使用してバックグラウンド(テクスチャストリーミング、頂点バッファー)にリソースを割り当てることができるということです。これはOpenGLでも可能ですが、非常にトリッキーです。DirectX 11では、多くのスレッドから描画呼び出しを行うこともできるため、パフォーマンスが向上するはずですが、これは一般的な方法ではありません。UnrealEngine4の最後のリリースでそれができると思います。ただし、DirectX 12とVulkanを使用すると、マルチスレッドレンダリングは現実的なものになります。
ダライアス2016年

1

いくつかの考えられる理由:

  • 歴史的に、OpenGLドライバーの品質はさまざまですが、それがこれ以上当てはまるかどうかはわかりません。
  • XboxはD3Dをサポートしているため、XboxとPCの間でのゲームの移植は簡単です。
  • D3Dのデバッグツールは、OpenGLよりも優れています。幸いにも我々は今持っているRenderDocを
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.