OpenGLとDirectX

最近毎日のようにOpenGLに触れるようになって色々とDirectXと比較すると違うなぁと思ったりするのでちょっと個人的な主観で色々まとめてみようと思います.

OpenGL

歴史的背景は置いておくとして,現在のOpenGLはバージョン4.1が最新版で一時期の更新が滞り,DirectXと様々な面で差をつけられていました.その名の通りオープンな仕様で非常に幅広い処理系に対応しており,専らゲーム専門のライブラリというわけではなく,画像処理やCADなどの分野でも使用されている事が多いです.GLSLという独自のシェーディング言語を仕様化し,更にマルチな展開をみせるようになり,組込み用途向けのOpenGL ESとの連携でどんな環境にも耐えられるようになってきつつあります.

DirectX

ご存知Microsoftが作りだしたゲーム特化のマルチメディア処理用API群です.一時期の更新の頻度はOpenGLにとても大きく差をつけるほど進化しましたが,最近は少し大人しめ.またコンソールゲーム機であるXboxにもDirectXが搭載されており,完全な互換性とまではいかなくともかなり高い互換性を持っています.OpenGLと大きく違うのはマルチメディア処理用に作られているので描画部分以外でも使用出来るのが強み.ぶっちゃけDirectXさえあればゲーム開発が出来てしまうのが大きいですが,それ故に仕様がかなり肥大化しすぎているという側面もあります.

OpenGLのメリット

  • マルチプラットフォームであらゆる分野において動作する ※完全ではない
  • 非常に単純な構造になっているので習得は簡単な方
  • OpenGL用に連携がしやすい外部ライブラリが沢山ある
  • 初期からインストールせずに動作する環境が入っているケースが多い
  • GLUTがWindowsAPIほどゴチャゴチャせずにとても扱いやすい
  • PS3などのコンソールゲーム機ではOpenGLの独自拡張が使われている

DirectXのメリット

  • 他にインストールしなくても十分に開発が可能
  • WindowsにおいてはOpenGLよりも最適化されており,高速に動作
  • ネット上にドキュメントからサンプルまで非常に豊富
  • Windows環境においては安定した動作が期待出来る
  • OpenGL以上に技術の進歩が速く,最新の技術を導入出来る
  • とにかくゲーム開発においては今でもスタンダード

OpenGLのデメリット

  • ゲームを作る場合,サウンドジョイスティック用に別のライブラリを必要とする
  • 速度面でDirectXより多少劣る
  • サンプル,ドキュメントは少なめ
  • DirectXと比べて後追いな状態なため,比較的進化が遅い
  • 基本的な描画機能に絞っているため,線形代数も自分で作成する必要がある

DirectXのデメリット

  • Windows環境でしか基本的に動かない
  • 豊富なライブラリ群なため,仕様がとても膨大
  • 簡単なスケルトンプログラムでさえも複雑になってしまう
  • とても扱いが難しい機能が多い
  • 良くも悪くも独自仕様により汎用性に乏しい

■結局どっちもどっち?

どちらも一長一短であり,メリットとデメリットもハッキリしています.一言で言うならば,「汎用性に特化しているOpenGL」と「ゲーム開発に特化しているDirectX」でしょうか.


OpenGLは最近凄い頻度で更新しているので,技術的にも十分DirectXと大差なくなってきているのでそこは心配ないかもしれません.OpenGL ESの存在も大きく,iPhoneアプリケーションなどで大活躍している現在においては十分すぎるシェアもあると言えます.またOpenGLは細かい機能を提供していないので,3Dなどの勉強にも適していると言われています.その割りには簡素で綺麗なコードも書きやすいというのも魅力のひとつ.


DirectXも最近でこそは少し大人しめの印象がありますが,今でもメジャーバージョンアップを繰り返し,どんどん新しい技術を提供しています.Windowsでゲームをする場合は相変らずDirectXという時代がまだまだ続くとは思いますので,凄いゲームを作るんだ!! という方にはやはりDirectXが向いていると思います.ドキュメントやサンプルが非常に多いというのもメリットだと思いますのでどんどん新しい事を取り込んでいきたいという人にオススメ.

■今後は?

ここからはあくまでも私の予測ですが,OpenGLの最近の伸びは凄まじく,iPhoneなどのスマートフォン環境ではもはやスタンダードとなりつつあります.PS3などのコンソールゲーム機でも独自拡張のOpenGLが使用されている事を考えるとOpenGLを学ぶメリットも十分あると言えるので,新しく3Dに挑戦してみようかなという人にはオススメします.もちろんDirectXもまだまだ安定して使えるので,用途に応じて使いわけるのがいいと思います.