| Game Coding Complete 047 |
|---|
|
28DirectXI は絶対に必要なのか
2.8.1DirectX 計理念 DirectX/は、アリケーションとハードウェアの橋渡しの役目をするものだ。ハードウェアが何らかの作業を行うとき、ドライバを呼び出してその作業を行えるようにするのがDirectX である。しかるべきハードウェアがないときは、DirectX(はその呼び出しをソフトウェア上でエミュレートするが、この場合速度は遅くなる。 DirectX はプラットフォームに依存しないAPIという設計理念から生まれたものである。昔(1990年代初め)のプログラマたちはたいへんだった。例えば、サウンドシステムを書くときのプログラマの作業量を考えてもらうとわかりやすいだろう。オリジンではサウンドカードとしてAdlib 、Roland 、SoundBlaster をサポートしていた。グラフィックスカードも同様で、EGAとHercules をサポートしていたが、古いEGAとHercules ではまったく違った もちろんDirectX が一番簡単なAPIというわけではない。COMは慣れなければなかなか使えない代物だ。また3D描画面の初期化にはコードを50行も書かなければならない。OpenGL ならもっと簡単にできる。要するにOpenGL とDirectXo の宗教論争の根底にあるのは、古いC対新しいCOMという対立構造なのである。きちんと理解するには、まずはこういった宗教的な考え方を捨てよう。 DirectX はハードウェアがある機能をサポートしているかいないかで、結果に明確な差が出る。あなたのビデオカードはハードウェアT&Lや最新シェーダをサポートしているのか、あるいは何もサポートしていないのか。これはCaps bits"ですぐにわかる。サポートしていれば緻密な地形がロードされるし、サポートしていなければダイアログボックスが出てきて「失敗です!ハイエンドなビデオカードが必要です」というメッセージが出てくるだけだ。エラーメッセージから「失敗です!」という言葉を取り除いてやれば、カスタマーサービスの人たちからは感謝されるかもしれない。 2.8.2Direct 3DかOpenGL か DirectX とOpenGL のどちらがいいとか悪いとかを議論するつもりはない。あなたのゲームやあなたの開発チーム、そしてあなたの最新ゲームに金を払ってプレイしてくれる人たちのために、比較検討したうえで最良のものを選べるように、できるだけ多くの情報を提供したいと思っている。この項についてはきっといろいろなメールが寄せられることだろう。いろいろな意見を期待している。いずれにしても私は宗教論争とは一線を画したい。どちらのAPIを使ってもゲームの質が上がるのは間違いない。両方のAPIをサポートしているミドルウェアレンダリングエンジンもたくさんある。これはどういうことかというと、それぞれに面白い特徴はいろいろあるが、ビデオカードの性能を向上させるという基本的な特徴に関してはそれほど変わらないということである。 ドライバの性能は制御できない。OpenGL ドライの中にはひどいものもあるし、日の目を見せてはいけなかったのではないかと思えるようなDirect 3Dドライバもある。こうした現実を考えると、プレイする人がゲームを本当に楽しめるような、優れたドライバを持ったAPIを選択すべきだろう。例えば、『ハーフライフ2のような本格的タイトルの場合、OpenGL' を選んだほうが安心だろ |