3Dグラフィックを勉強するとき、必ず登場するのが『DirectX』と『OpenGL』。
どちらも、グラフィックを描画するための機能を提供するライブラリです。
『DirectX』と『OpenGL』の違いについて知っていますか?
『DirectX』と『OpenGL』のどちらを使えばいいのかな?
それぞれ得手不得手があったと思うけど、詳しくは僕も知らないんだ。
この記事では、『DirectX』と『OpenGL』の違いについて解説し、表示速度や精度を比較していきます。
『DirectX』と『OpenGL』の違い
まずは、『DirectX』と『OpenGL』がどんなものか、確認しておきましょう。
『DirectX』とは?
マイクロソフトが開発したゲーム・マルチメディア処理用の『API』
のことです。
『API』とは、『Application Programming Interface』の略です。
簡単に言えば、プログラムを組む時に便利な機能を提供するためのライブラリを意味します。
『DirectX』が最初にリリースされたのは1995年、ちょうどWindows95が発売された後のことでした。
元々は、Windows上でグラフィックやサウンドなどの制御を簡単にできるように開発されています。
グラフィック関連だけでなく、サウンドやキーボード・マウス等のデバイス制御など、様々な機能を持っていました。
2020年2月現在の最新バージョンは2015年にリリースされた『DirectX 12』になります。
『OpenGL』とは?
Silicon Graphics社のワークステーション向けに開発されていたAPIから、機種依存の部分を取り除いて公開されたライブラリ
のことです。
元々、CGやCADでの利用を想定して作られたライブラリであり、非常に高精度なため、正確な描画が求められる分野では広く使われていました。
2020年2月現在の最新バージョンは『OpenGL 4.6』で、2017年のリリースです。
『DirectX』と『OpenGL』の違い
『DirectX』と『OpenGL』の主な違いをまとめると、次になります。
『DirectX』と『OpenGL』の違い
- 『OpenGL』はマルチプラットフォームだが、『DirectX』はWindows環境でしか使えない。
- Windows環境においては、『DirectX』のほうが最適化され、高速に動作する。
- 『DirectX』のほうが『OpenGL』よりも技術の進歩が速い。
- 『OpenGL』は、基本的な描画機能しか提供していないが、『DirectX』はゲーム作成に必要な機能をほぼ全て網羅している。
- 『DirectX』は、仕様が膨大であり、簡単なプログラムを作るだけでも非常に複雑になってしまう。
プラットフォームの違い
『OpenGL』は、マルチプラットフォームです。
Windowsはもちろんのこと、LinuxやMacOSなどでも動作します。
それに対して、
『DirectX』はWindows環境でしか動作しません。
LinuxやMacOSなどでは『DirectX』を利用することはできないわけですね。
逆に考えれば、
『DirectX』はWindows環境用に最適化されています。
ですから、Windows上であれば、『OpenGL』よりも高速に動作することになります。
リリースのスピード
『OpenGL』は、バージョンアップのタイミングが非常にゆっくりで、
『DirectX』に比べると、技術の進歩が遅く感じます。
そのため、性能面において『DirectX』に大きく水を開けられた時期がありました。
しかし、『OpenGL 4』がリリースされ、そのギャップはだいぶ縮まったと言われています。
機能の違い
3Dグラフィックでは、大量の行列演算が必要になります。
『OpenGL』は基本的な描画機能しか提供していないため、計算ルーチンはどうしても自前で作らなければなりません。
それに対して、
『DirectX』は、非常にたくさんの機能を持っています。
ですから、いろいろな演算機能もAPIを呼び出すことで簡単に利用することができます。
しかし、
それはつまり、膨大な量の機能を持っていることにつながります。
ウィンドウを表示するプログラムを作成するだけでも、膨大な量のAPIを使わなければならず、プログラムが非常に複雑になります。
『OpenGL』の場合、機能が限定されている分、『扱いやすい』というメリットがあります。
『DirectX』と『OpenGL』表示速度や精度について
Windows環境の場合、『DirectX』と『OpenGL』のどちらを使うか、選択ができます。
そうなると気になるのは、両者の表示速度や精度ですね。
残念ながら、表示速度や精度について具体的な数値で示すことはできません。
というのも、表示速度については利用しているグラフィックボードによって大きく変わるからです。
例えば、NVIDIAのグラフィックボードについても、GeForceは『DirectX』に、Quadroは『OpenGL』について最適化がされています。
ですから、パソコンの環境によって性能が逆転することもあるわけですね。
一般的には、
表示速度については『DirectX』のほうが上、精度については『OpenGL』のほうが上である
という評価が多いです。
Windows環境で最適化されている『DirectX』のほうが、マルチプラットフォームの『OpenGL』に比べて表示速度が上であるというのは納得できますね。
また、元々ゲーム用途で開発された『DirectX』は、精度についてはそれほど必要ないことから、CGやCADで利用されていた『OpenGL』のほうが精度が上である点もうなずけます。
しかし、その考えが最近は、あてはまらなくなってきました。
『DirectX』も、CGやCAD用途で利用されることを想定して精度が向上しています。
また、『OpenGL』も性能の強化がされています。
両者のギャップは、かなり狭まっているというのが現状です。
これらのAPIを利用しているソフトウェアも、『DirectX』と『OpenGL』のどちらを利用するか切り替えできるものが多くあります。
自分の環境に合わせてどちらを使うか選ぶのが理想でしょう。
スポンサーリンク
まとめ
ポイント
- 『DirectX』は、マイクロソフトが開発したゲーム・マルチメディア処理用の『API』である。
- 『OpenGL』は、Silicon Graphics 社のワークステーション向けに開発されていたAPIから、機種依存の部分を取り除いて公開されたライブラリである。
- 『OpenGL』は、マルチプラットフォーム、『DirectX』は、Windows環境でしか使えない。
- Windows環境においては、『DirectX』のほうが最適化されていて、高速に動作する。
- 『DirectX』のほうが『OpenGL』よりも技術の進歩が速い。
- 『OpenGL』は、基本的な描画機能しか提供していないが、『DirectX』はゲーム作成に必要な機能をほぼ全て網羅している。
- 『DirectX』は、仕様が膨大であり、簡単なプログラムを作るだけでも非常に複雑になってしまう。
『DirectX』も『OpenGL』も、たくさんのドキュメントやサンプルが公開されています。
まずは、それらを試してみて、自分に合ったほうを採用するのがベストですよ。