アフィリエイト

DirectXとは

 Windowsを使ってゲームを作る際に、もっとも問題となるのが描画速度です。つまり、Windows標準の機能で画面に絵を書いていては遅すぎるのです。そこで登場したのがこのDirectXです。DirectXを使えば、コンピュータの性能をフルに引き出し、高速な画像描画を行うことができます。(もちろん3Dですよ)それだけではありません、ジョイスティック入力(振動機能なんかも対応)、3Dサウンド、動画の再生、ネットワーク形成なんかも簡単にできるようになります。現在のWindows上で動いてるマルチメディア系(特にゲーム)プログラムの半数以上はこのDirectXを使っているでしょう。

 DirectXは、本質的には拡張APIです。と言っても、ピンとこないでしょう。簡単に言ってしまえば、Windowsにマルチメディア系の機能を追加するものです。アプリケーションというよりは、Windowsをゲーム用に改造しているイメージのほうが近いかもしれません。ここでは、そんな改造されたWindows上で高速に動作するゲームの製作を目指していきます。

DirectXの歴史

 DirectXが始めて登場したのが、1995年のことです。約10年前の話です。この時代、ゲーム業界に何があったのかを覚えているでしょうか?そう、SonyがPlayStationを発売したのです。それに対して当時のWindows(95)は、Microsoftからの多少の機能拡張があったものの、マルチメディア系の処理が非常に弱かったのです。特に、ゲームのようにコンピュータの性能をフルに引き出す必要のあるものは厳しいものでした。そんな中、登場したのがWindowsにマルチメディア機能を追加するDirectXです。

 当時20万円は軽く超えてしまう市販パソコンが3万(だったっけ?)くらいのPSに性能的に劣るとは考えにくいと思います。PSはゲーム専用機であるのに対して、パソコンが汎用機であるためその性能差は仕方がないとしても、金額的に差がありすぎます。パソコン(以下Windowsに限定)がゲーム機に劣る理由は、パソコンの構成がマシンごとに異なっているためその性能をフルに引き出せないことが一つに挙げられます。パソコンの性能をフルに引き出すにはそのパソコン専用のプログラムをしてやれば性能を引き出すことができます。PSは全てが全く同じマシン構成になっているため、それが可能なのですが、パソコンでは種類が膨大なため事実上不可能です。ならばと、パソコンに何か統一の規格のようなものを設けてしまうことにしたのです。

 そこで登場したのが、GameSDKと呼ばれるDirectXの最初のバージョンです。これは、ハードウェアによる違いを「HAL」と呼ばれるソフトウェアの部分で吸収ししてくれます。そして、ビデオカードメーカーはDirectXに対応したドライバを提供し、その統一した規格のもとに同じ命令で異なるビデオカードの性能を引き出すことができるようになりました。これにより、プログラマはわざわざ専用の命令を書かなくても、DirectXに対応させるだけで高速な描画ができるようになったのです。

 その後、DirectXは描画だけでなく音声・入出力インターフェイス・ネットワークなどの機能を重ねつつDirectXはバージョンアップを続けてきました。また、描画に関してもグラフィックカードの進化とともに新しい機能を搭載してきました。2005年現在、DirectXはバージョン9までリリースされています。

DirectXの機能

DirectXの世代によって結構違いますが、今回使用するDirectX9について簡単に説明紹介します。

DirectGraphics グラフィック(描画関連)を扱う。3Dグラフィックはこれを使う。
DirectSound Waveファイルなどを再生できる。複数再生や3Dサウンドなんかも可能。
DirectMusic midiファイルを再生できる。ソフトウェア音源で一定の音で再生可能(らしい)。
DirectInput キーボードやゲームパッド等の入力デバイスを扱う。
DirectPlay ネットワーク構成を行なう。これを使えば比較的簡単にネットゲーも作れる(らしい)
DirectShow いつの間にかDirectXから外れた…主に動画ファイルを再生できる。

 このように、DirectXは今必要なマルチメディア関連の機能をほとんど実装しています。ちなみに、DirectShowはいつの間にかDirectXから外れて(機能的には外れてませんが)WindowsプラットフォームSDKの中に開発キッドが含まれています。言うまでもないと思いますが、ゲームに使える機能ばかりですね。

Managed DirectX

 さて、DirectX9から新たに(?)追加された機能がもう一つあります。それがManaged DirectXです。開発環境の構築の回でもチラッと説明しましたが、C#(.NET開発環境)で作られたプログラムは主にマネージドコードというもので書かれています。DirectXはもともとC++などのアンマネージド環境用に作られていたものなので、そのままではあまり.NET環境にはマッチしていませんでした。そこで、マネージド環境でもそのまま使えるように追加されたのがこのManaged DirectXです。

 Managed DirectXは通常のDirectXを.NETから呼び出しています。そのため、ほとんどのDirectXの機能を使うことが出来ます。(DirectShowは使えませんが)また、.NETネームスペース上に分かりやすい名前で機能を管理しているため、通常のDirectXよりも非常に使いやすいものになっています。さらに、初期化処理などもろもろの面倒な部分も簡単なメソッドにまとまっているため(C++でこつこつコードを書いていた時代からすると)驚くほど簡単にDirectXの機能を使えるのです。この講座では主にManaged DirectXを使ってプログラムを進めて行きたいと思います。

まとめ

 色々説明しましたが、つまりはDirectXを使えばマルチメディア系、特にゲームをハイクウォリティーなものに仕上げることが出来ます。DirectXを使ってどんなことが出来るかはおいおい講座の中で説明するとして、とりあえずこういう便利なものがあることだけ分かってもらえば幸いです。DirectXについて詳しいことについては、MicrosoftのDirectXのページや他のサイトで調べてみてください。