2009-06-09 14 views
3

OpenGLとDirect3Dの違いは何ですか?同じもの(JavaやMirosoftのCLR [.NET]など)を実現するための実装は本当に異なっていますか? Googleはこの場合、あなたの友人であるOpenGLとDirect3D

+0

DirectXは単なる3Dグラフィックスではありませんが、Direct3DとOpenGLの違いは何ですか? –

+0

あなたの権利、私はそれを修正しました。 http://en.wikipedia.org/wiki/DirectX –

答えて

9

非常に異なるグラフィックスAPIです。しかし、彼らがほとんど同じことを成し遂げていると言うのは公正です。 DirectXはWindows(またはXBOX用のゲーム)の下でゲームを開発する場合はおそらくAPIであり、クロスプラットフォームサポートが必要な場合はOpenGLが選択肢です。 Mac OSは、たとえばiPhoneのようにGLを使用しており、多くのWindowsゲームでOpenGLもサポートされています。

OpenGLは長年に渡って開発され、委員会によって開発されたため、多くの手荷物が付属しています。APIには、今日はあまり関係のない古いオプションがいくつかあります。これがOpenGL ESの理由の1つです。それはすべての迷惑をカットし、より簡単なターゲットプラットフォームになります。

一方、DirectXはMicrosoftによって制御されているため、より「モダンな」感覚(COMコンポーネントに基づいており、オブジェクト指向性が高い)になっています。 MSはしばしば、新しいハードウェアと一致するようにAPIを更新する。

時々あなたは選択の贅沢を持っていません(例えば、iphoneはDXを実行できません)。しかし、しばしばそれは単に個人的な好み/経験に帰着する。長年のグラフィックスプログラマーであれば、両方にかなり慣れ親しむ傾向があります。

+0

詳細な説明ありがとうございます。それは私に2つの非常に明確な画像を与えます。 –

3

... 2つのライブラリcontrastring良いWikipediaの記事があります:Direct3Dのが出てきた前にメモリが提供している場合

Comparison of OpenGL and Direct3D

は、OpenGLはオープンな実装でした。 Direct3DはOpenGLをベースにしていましたが、すぐに分岐して独自のライブラリになりました。

UPDATE

私の記憶が撮影されているように見えます...

のDirect3DはindependtlyのOpenGLの開発されました。

+0

Direct3DはOGLに基づいていませんでした(ただし、両方とも同じ基本モデルをレンダリングに使用しました)。5.0より前のD3Dの歴史は間違いなく奇妙です(http:// en .wikipedia.org/wiki/Direct3D#History)を参照してください。 – Michael

+0

Googleの良い点。 –

+0

Heh - Direct3Dになる前にDirect3Dで作業しました;-) OpenGLに基づいているわけではありません... –

3

Direct3DとOpenGLは、同じことを達成するために使用されるAPIとは異なります。

D3DとGLの主な違いは、D3Dがオブジェクト指向であり、GLがそうでないことです。 D3D9とGLES2は基本的に同じ機能を持っています。実際、OpenGLの使用を計画していて、GL3またはGL4の機能を必要としない場合は、GLES2 APIのすべてのコードをベースにする必要があります(GLES2のすべての機能はGL2にありますが、逆もありません)。

可能であれば、マルチスレッドとドライバのサポートが不安定であるため、可能であればWindows上で常にGL上のD3Dを使用する必要があります。例えば、ネットブックはShaderModel 2でD3DのHLSLをサポートしていますが、GLSLと同等のものをサポートしていないため、GL用の固定パイプラインしかサポートしていません。

関連する問題