DirectX
概要
DirectXとは、コンピュータプログラムからハードウェアの機能を呼び出してグラフィックス処理などを高速に実行するための共通の利用規約(API)の一つ。また、同APIを利用したプログラムを実行するのに必要なソフトウェア部品群(DirectXランタイム)。米マイクロソフト(Microsoft)社がパソコン向けOSのWindowsシリーズや家庭用ゲーム機のXboxシリーズ向けに開発・提供しているもので、ビデオゲーム関連の処理や入出力、音声・映像処理、画像・図形描画(2DCG)、3次元グラフィックス(3DCG)描画のための数値計算などを高速化することができる。
3DCG処理のための「Direct3D」(D3D)が最も有名であり、文脈によってはD3Dを指してDirectXと呼ぶことも多いが、厳密にはD3DはDirectXの一部であり、他にも様々な機能を提供するAPI群がある。
DirectX登場の背景
コンピュータに組み込まれた半導体チップや装置には与えられた機能(グラフィックスチップであれば3DCG演算など)を高速、低遅延に処理する能力があるが、製品ごとに仕様や機能の呼び出し方法が異なり、従来は個別に対応するプログラムを開発して高速に呼び出すか、OSの一般的な制御機能を経由して低速に呼び出すしかなかった。
DirectXではハードウェア利用のための共通の呼び出し方法を用意することで、プログラム側からDirectXの仕様に則った記述方法で機能の呼び出しを行えば、機種や製品を問わず機能を高速に呼び出すことができるようになった。
現行のDirectX API
DirectXは機能や対象ハードウェアごとに用意された様々なAPI群のパッケージである。個別のAPIとして、
- Direct3D(D3D)…ビデオチップの3D演算機能を呼び出す
- Direct2D(D2D)…平面図形および画像(2次元グラフィックス)を描画する
- DirectWrite…文字表示を高速化する
- DirectCompute…GPGPU(GPUコンピューティング)を行う
- DirectX Raytracing…リアルタイムにレイトレーシング処理を行う
- DirectX Graphics Infrastructure(DXGI)…ビデオカードやディスプレイとの接続・通信を制御する
- XAudio2…音声処理やオーディオ機器を制御する
- XInput…ゲームコントローラの入出力を制御する
などがある。
廃止・移管されたAPI
また、開発終了あるいは後継仕様に置き換えられた旧APIには、音声処理の「DirectSound」「XACT」および立体音響処理の「DirectSound3D」「X3DAudio」(いずれもXAudio2へ統合)、MIDI再生の「DirectMusic」(廃止)、オンラインゲームの通信仕様「DirectPlay」(廃止)、音声・動画の圧縮・展開などの処理を支援する「DirectShow」(Media Foundationへ置き換え)、様々な入力機器を制御する「DirectInput」(XInputおよび標準Windows APIへ置き換え)、図形・画像のアニメーション処理を行う「DirectAnimation」(廃止)などがある。
DirectXのバージョン
1995年にWindows 95の追加機能としてDirectX 1.0(初期の名称はWindows Game SDK)が提供された。2000年のDirectX 8で構成が大きく再編され、2002年のDirectX 9からはXAudioやXInputなどXbox向けのAPIがWindows向けDirectXに統合されるようになった。
Windows自体のバージョンによってDirectXのどのバージョンまで対応するかが決まっており、例えばWindows XPはDirectX 9まで、Windows 7はDirectX 11.0までなどとなっている。DirectXランタイムは異なるバージョンを同じWindowsシステムに共存させて使い分けることができ、ハードウェアやソフトウェアの対応状況により必要なバージョンを呼び出して使用することができる。
Windows 10専用のDirect3D 12はそれまでと異なりハードウェアに近い低レベルの制御を行うためのAPIとなっており、比較的高レベルの制御を行うDirect3D 11.xを置き換えることはできず、両方を導入してソフトウェアによって使い分けるようになっている。
DXVA (DirectX Video Acceleration)
DirectXの拡張機能の一つで、コンピュータがGPU(Graphics Processing Unit)を搭載している場合にこれを利用してビデオ再生を高速化するもの。
DXVAを有効に指定すると、ビデオカードなどに搭載されているグラフィックスチップの動画処理支援機能(ハードウェアアクセラレーション)を活用する。CPUの負荷が軽減され、コマ落ちなどが少なくなるほか、機種によっては画質が向上する場合もある。
DXVAを利用するには、ビデオカードや内蔵ビデオに動画処理機能があり、デバイスドライバが対応しているほか、動画再生ソフトやデコーダソフトもDXVAに対応している必要がある。