<Direct X 動作原理>

 02/07/02

             Direct XはPC上でどのようにしてゲームを動かしているのだろうか? ここではそれを順に見ていこう。


1.基本動作原理

 PCでゲームを遊ぶ場合、DXが絡んでくる部分は3つある。

1.ゲーム自体が要求するバージョン。「このゲームの動作にはDirect X8.1以上が必要です」といった部分
2.WindowsにインストールされているDirect Xのバージョン
3.搭載されたハードウェアを動かすドライバの対応するDirect Xのバージョン

 この内1,2には特にどうもこうもないというか、ゲームについては異なったDXのバージョンに対応した物が分けて販売される訳ではないので、自分の欲しいと思ったゲームがDX8.1以上を要求しているのならばそれを買うだけで変更のしようが無いし、WinにインストールされるDXは単に手に入れてインストールしてやるだけであり「動作にはDX8.1以上が必要です」とあれば8.1をインストールするだけの話になる。誰でもゲームは買えるし、どんなWinにでも最新のDXをインストールする事は可能(正確に言えばインストールする事自体は可能という意味で、この辺は別項で詳しく述べる)であって、ここまでは皆同じである。問題は3番の「ゲームの要求するDXのバージョン(或いはWinにインストールされたDXのバージョン)で正常に動作するドライバがあるか?」という事に集約される。

 ここでDXがどの様に動作するのかを模式的に考えてみよう。DX8.1を動作に必要とするゲームは、WinにあるDXの窓口に対してその仕様に則った命令を出してハードを動かす事を要求する。もしこの時にWinにインストールされたDXのバージョンがそれよりも前の7.0とかだったらどうなるだろう。7.0以降に追加された新しい様式の命令を出された時に、DXはそれを理解出来ないという事が起きてしまう(実生活で新しい方式の何かのカードを使うのに、それを使えるリーダー装置側も同じく新しくなっていないと正確に読み取れないといったのと同じ)。だからDX8.1を使うゲームならば、Winにはそれ以上のバージョンのDXをインストールしておかないとならないという意味であり、これは誰にも理解出来るだろう。
 次にプログラムからの要求を受け取ったDXは、その要求に応じてそれぞれのハードを動かす(管理する)ドライバに対して作業の指示を出す。ここでも今のと同じ事が言えて、各ドライバはゲームの使用しているDXのバージョンに対応していなければならない。何故ならゲームが8.1で動いているのに使っているドライバが7.0までの対応の物だったら、新しく追加された指示に対してドライバは反応が(理解が)出来ないからである。だから上記の3つの項目を揃える事、「ゲームの要求するバージョンのDXがインストールされており」「ハードウェアのドライバもそのDXのバージョンに対応している」事がゲームを動かす上での原則条件となる。言い換えれば「使っているビデオカードやサウンドカードに、要求されるDXのバージョンに対応したドライバが無ければゲームは動かない」という事である。


2.ドライバの問題

 1の解説からすると、全てのハードメーカーがDXの更新に合わせてドライバをも更新してくれれば問題は起きない事になる。それが単体販売のビデオカードやサウンドカードであれ一体型のメーカー製PCであれ、新しいDXが出る度に各メーカーのサイトからそれに対応した新ドライバをDownloadして現在使用中の古いドライバと差し替えれば良いのである。が、現実にはそうなっていない為にゲームが自分のPCでは動かないという人が出てくる。では何故各メーカーはDXのバージョンアップに合わせて自社のドライバを更新してくれないのだろうか?

*ハードの能力的に不可
 DXのバージョンが上がる毎に当然のことながらハードに対する要求は高くなる。よって数年前のハードだと、もうハードの能力的に最新のDXの要求する仕様に対応出来ないのでドライバ開発が実質不可というケース。

*経費的に不可
 ドライバをメーカーが用意すれば良いと書いたが、これは実際には大変な事なのである。ドライバとはハードウェアを動作させる”プログラム”であるから当然開発費も日数もかかる物であるが、更新というのは基本的に無料で実施される。これはメーカーにとっては頭の痛い話である。特にビデオカード用のドライバの場合は単に動けば良いというものではなくそこには処理速度も要求されてくる訳で、そうなってくるとドライバ開発自体がメーカーには負荷となってくる。
 つまり対応するドライバを作成する技術は持っているが、そのための人員・日数・経費を考えると会社に取ってデメリットが大きいという判断から作成自体中止されるというケース。もちろん現在でも売っている物にこういった処置が行われる事は稀だが、数世代前の物で現在の使用ユーザー数を考えると....いう判断から行われれる。

*プログラム能力的に不可
 バージョンが上がるほど高度な処理が要求される為にそれなりに優れたドライバを開発しなければならなくなるが、これがプログラマーの能力的に出来ないというケースもある。当然各社にはプログラム開発能力の差があって、それは努力とかで埋まるものではない。一種のプログラムであるドライバの場合も全く同様である。

*販売方針的に
 あまり古いハード用にドライバをいつまでも作成しているとユーザーの買い替えが起きない。よってある程度前のカードについては買い替えを促すために意図的にサポートしないという形。特にメーカー製のPCではあくまでも売った時の能力がそのPCの能力というスタンスが多く、ドライバによる更新を早目に打ち切るケースが目立つ。単品販売の各種ハードに比べると見切りは早いと考えておくべきだろう。


3.ドライバの確認

 ここで当然出てくる疑問は、自分のPCのハードはDXのどのバージョンまで対応しているのか? それをどうやって知るのか? という事になるだろう。この辺についてはdxdiag(DXの診断プログラム)等にてまとめるが、基礎的な点に付いてはここに書いておく。

 まずWin内の情報を見てもそのドライバが現在のDXに対応しているのかを知るのは若干難しい面もある(dxdiagにて詳しく解説)。よって基本的にはそのメーカーがリリースしているドライバに対して添付されている「DX 8.1に対応のドライバ」とかいう解説を見るのが基本。メーカーサイトのDownloadセクションに、新型のドライバでDX8.1に対応とかあればそれを新しく使えば良い事になる。この辺は単品で販売されているカードに関しては情報も集め易いしドライバに関する説明も親切なのだが、メーカーの一体型PCについてはかなりわかりにくい面もある。
 次にどの様なハードのドライバが必要なのかというと、これはゲームに関して言えばビデオカードのドライバが最重要。次にサウンドカードで他はパッドやジョイスティック程度。

 現状使用しているドライバが対応しているのかもわからないし、新しい物はあるがDXのどのバージョンにまで適応しているのか書いてないといったケースは多々出てくると思うのだが、基本はとりあえず最新のドライバを使用するという事になる。自分のマシンで使用している物よりも新しいバージョンのドライバがあればそれを使用するという事だ。この辺はかなり複雑な問題が絡んでくるので他の解説に関しても合わせて読んでもらいたい。


  目次