Microsoft DirectX(ダイレクトエックス)は、マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合であるDirectXとは - IT用語辞典 e-Words。オーバーヘッドを少なくしたデバイスの仮想化・抽象化を提供する。Windows・Xbox・Xbox 360・Xbox Oneなど、マイクロソフト製のプラットフォームおよびデバイスにおいて広く利用されている。APIの一部はハードウェアアクセラレーションに対応しており、DirectX互換のハードウェアとデバイスドライバーが搭載されたコンピュータ上では、CPUの負担を低減しつつ高速処理することができる。グラフィックスに関しては、DirectX (Direct3D) 互換のGPU(ビデオカードやオンボードグラフィックスなど)を利用することにより、高品質の2次元・3次元コンピュータグラフィックスを高速にレンダリングできる。
DirectX Runtime DirectXのランタイム (DLL) には大きく分けて2種あり、1つはd3d11.dllやd2d1.dllなどのような基本ランタイム、そしてもう1つはd3dx11_43.dll、D3DCompiler_43.dll、XAudio2_7.dllやxactengine3_7.dllといったSDK依存の追加ランタイムである。前者はWindowsオペレーティングシステム (OS) のセットアップ時(プリインストール)、もしくはMicrosoft Update/Windows Updateなどを通して最新のサービスパックや更新プログラムの適用時にシステムコンポーネントとして標準インストールされる一方で、後者はアプリケーションの開発に使用したDirectX SDK(Windows SDK)のバージョンに依存し、またMicrosoft Update/Windows Update経由でのインストールはできないため、DirectXアプリケーションの利用者がマイクロソフトの配布サイトからDirectXエンドユーザーランタイムのセットアッププログラムDownload DirectX End-User Runtime from Official Microsoft Download Centerをダウンロードして明示的にインストールする最新版の DirectX をインストールする方法 - Microsoft サポートか、もしくはDirectXアプリケーションの開発者がアプリケーションのセットアッププログラムに必須ランタイムのインストール機能を含める必要があるゲーム開発者のための DirectX のインストール | Microsoft Docs。
なお、Windows SDK 8.0付属のD3DCompiler_46.dllや、Windows SDK 8.1/10付属のD3DCompiler_47.dllなどは、OSによっては標準でインストールされておらず、また単独のエンドユーザー向けインストーラーも提供されていないため、開発者が対象環境に応じて明示的にアプリケーションに同梱しておく必要がある。.NET Framework 4.7はD3DCompiler_47.dllに依存しているが、インストーラーに含まれていないため、Windows 7などの旧環境では別途D3DCompiler更新プログラムを事前に適用しておく必要があるWindows 7、Windows Server 2008 R2、および Windows Server 2012 では、d3dcompiler の更新プログラムが欠落しているため、.NET Framework 4.7 のインストールがブロックされる - Microsoft サポート。
Windows 8.x以降は前者の基本ランタイムに加えて後者の追加ランタイムのうち特定のバージョン(XInput1_4.dllやXAudio2_8.dllなど)が最初からシステムコンポーネントとしてプリインストールされており、Windows 8/RT向けストアアプリ、Windows 8.1/RT 8.1向けストアアプリおよびユニバーサルWindowsプラットフォーム (UWP) アプリの開発では基本ランタイムと、この特定のバージョンの追加ランタイムのみを使うことができるXInput Versions - Windows applications | Microsoft DocsXAudio2 Versions - Windows applications | Microsoft Docs。
DirectXを使用したアプリケーションプログラムを実行する際、「xxx.dllが見つからなかったため、このアプリケーションを開始できませんでした。……」といったエラーに対処するには、DirectXランタイムのアップデートが必要になる。ただし、使用するOSによっては完全に実行不可能である場合もある。例えばWindows XPではDirectX 10以降を使用したアプリケーションは実行できない。また、Windows Vista/7/8.xではDirectX 12を利用することはできない。
コンポーネント群 DirectXの機能のうち、大部分はCOMインターフェイスの形で提供されているCOM による DirectX のプログラミング。DirectXのランタイムライブラリとSDKは、いずれもマイクロソフトのウェブサイトから無償でダウンロードできるが、プロプライエタリでソースコードは非公開である。また、単独のDirectX SDKは「June 2010」が最終バージョンであり、Windows 8向けの開発キットであるWindows SDK 8.0がリリースされた際にWindows SDKへと統合されたWhere is the DirectX SDK?。PIX for WindowsなどのツールやD3DXライブラリはSDK統合の際に廃止され、代替としてGraphics DiagnosticsがMicrosoft Visual Studioに用意されたり、DirectX Tool Kitなどのオープンソースライブラリが開発・公開されたりしている(#補助ライブラリ)。
DirectX Graphics: DirectX 8からの名称。 Direct3D (D3D) : 3次元グラフィックス。DirectXの進化の歴史においてもっとも重要なコンポーネントとなっており、DirectXといえば間接的にDirect3Dを指していることがある。 DirectCompute: Windows 7以降で利用可能な、GPGPU用API。実際にはDirect3D 11/12の一部である。DirectX 11をサポートするためのプラットフォーム更新プログラムとしてWindows Vistaにもバックポートされた。 DirectML (Direct Machine Learning) : DirectX 12上に構築された、機械学習向けのローレベルなアクセラレーションライブラリDirectML の概要 - Windows applications | Microsoft Docs。Windows 10 1903以降で利用可能。2019年に発表し、2025年に開発終了。 DirectX Graphics Infrastructure (DXGI) : Direct3D 10以降のグラフィックス基盤API。デバイスとの通信など、ローレベルタスクを担当する。 Direct2D (D2D) : Windows 7以降で利用可能な、新しい2次元グラフィックスAPI。バージョン1.0はWindows Vistaにもバックポートされた。 DirectWrite: Windows 7以降で利用可能な、新しい高品位テキスト描画API。バージョン1.0はWindows Vistaにもバックポートされた。 DirectDraw: 2次元グラフィックス(DirectX 7まで存在したが、DirectX 8以降はDirect3Dに吸収された)。 DirectComposition: Windows 8以降で利用可能な、変形やアニメーションなどを伴う高性能なビットマップ合成を可能にするAPIDirectComposition - Win32 apps | Microsoft Learn。DWM機能の一部をアプリケーション側に解放し、シームレスな連携を可能にするArchitecture and components - Win32 apps | Microsoft Learn。 DirectX Audio: DirectX 8からの名称。 XAudio2: XboxのサウンドAPIであるXAudioから発展したもの。DirectSoundの後継。 X3DAudio: XAudio2と組み合わせて使用される、空間音響ライブラリ。 XACT: オーサリングツールを含む高レベルオーディオエンジン。更新終了。 DirectSound: サウンド再生および録音。更新終了。 DirectSound3D (DS3D) : 3次元サウンド再生。 : DirectMusic Producerで作成された音楽トラックの再生。更新終了。
XInput: Xbox 360およびXbox One専用ゲームコントローラーに対応するAPI。Windows上でもこれらのデバイスをコンソール同等に利用することが可能になる。 DirectInput: キーボード、マウス、ゲームパッド、ジョイスティックからの入力処理、およびフォースフィードバックを扱う。DirectX 8以降更新終了。FPSゲーム開発のような用途であっても、キーボードやマウスはWM_INPUT (Raw Input) やWM_MOUSEMOVEなどを代わりに利用することが推奨されているTaking Advantage of High-Definition Mouse Movement - Win32 apps | Microsoft Learn高解像度マウス動作の使用 | Microsoft Learn。
DirectX Video Acceleration (DXVA) : 動画処理API。バージョン1.0はDirectShowの一部だったが、Windows Vistaから利用可能なバージョン2.0はDirectShowやMedia Foundationからは独立している。 DirectShow: 各種音声・動画の再生・作成。後継としてMedia Foundationが存在する。 DirectAnimation: 2D/3D Webアニメーション用Microsoft Releases DirectAnimation - StoriesDirectAnimation Samples | Microsoft Learn。Internet Explorer 4.0以降に統合されていた。
DirectX Media ObjectsDirectX Media Objects (Windows): エンコーダー、デコーダー、エフェクトといったストリーミングオブジェクトのサポート。 : ネットワーク通信。DirectX 8以降更新終了。 DirectSetup: DirectXランタイムのセットアップ用であり、正確にはAPIではない。 DirectStorage: 最新のNVMeストレージデバイスに最適化された、低オーバーヘッドのI/Oを提供するAPIDirectStorage (コンテンツ) - Microsoft Game Core | Microsoft Learn。DirectStorage 1.1では、Direct3D 12上に構築された、圧縮データをGPUで展開する機能もサポートするMicrosoft、GPU展開でゲームのロード時間を大幅短縮する「DirectStorage 1.1」 | マイナビニュースGitHub - microsoft/DirectStorage: DirectStorage for Windows is an API that allows game developers to unlock the full potential of high speed NVMe drives for loading game assets.。Xbox Series X/SおよびWindows 10/Windows 11で利用可能。
DirectX APIは基本的にSide-by-Sideであり、複数のバージョンが競合することなく共存できるため、例えばDirectX 11がインストールされている環境でもDirectX 10およびそれ以前のバージョンを利用することは可能である。また、更新が終了したAPIのうち、OSに標準インストールされているコンポーネントに関しては、Windows 10などの新しいOSでも引き続きデスクトップアプリケーションにて標準的に利用すること自体は可能だが、Direct3D 8などのようにネイティブ64ビット版が用意されていないものも存在する64-bit programming for Game Developers - Win32 apps | Microsoft Learn。
リリース履歴 DirectX 12およびDirectX 11.3はWindows 10 (Windows 10 for Desktop, Windows 10 for Xbox One, Windows 10 for Phone) 専用のバージョンである。PC用Windows 10のほか、Xbox One用Windows 10にも対応するWindows 10 ゲームのテクノロジ - Windows アプリの開発。DirectX 12はWindows Phone (Windows 10 Mobile/Windows 10 IoT) にも対応することが報じられている【後藤弘茂のWeekly海外ニュース】GPUの進化に対応したMicrosoftの次世代API「DirectX 12」の背景 - PC Watchが、DirectX 12/WDDM 2.0に対応するデバイスドライバーおよび機能レベル11_0以上に対応するハードウェアが必須となる。
DirectX 11.2はWindows 8.1以降/Xbox One専用のバージョンである。
Windows 7(一部DirectX 11.1に対応)/Windows VistaにおいてはDirectX 11.0、Windows XP・2000/Me/98/98SEはDirectX 9(9.0c)、Windows 95はDirectX 8(8.0a)が最新バージョンとなる。ただしPC-9800シリーズの場合はDirectX 7(7.0a)が最新バージョンであり、それ以上のバージョンは制限を解除しないとインストールできないようになっている。またWindows NT 4.0ではSP3以降に付随するDirectX 3相当機能が最新バージョンとなる。
一部のバージョンに関しては、Windows UpdateやWindowsストアを通じて、OSが対応する最新のDirectXをサービスパックなどの機能更新プログラムとともに入手することが可能である。例えばWindows XPの場合、Windows Update経由でSP2と同時にDirectX 9.0cを入手できる。Windows Vistaの場合、SP1と同時にDirectX 10.1を、またSP2+Platform Updateと同時にDirectX 11を入手できる。なお、DirectX 10以降は、Windows Display Driver Modelの導入を始めとして、Windowsのグラフィックスアーキテクチャに大規模な修正が加えられたことから、Windows XPなどの旧Windows製品では利用できない。新しいOSでは、対応する最新バージョンよりも古いバージョンのDirectXに関しても基本的にすべて利用可能である。
バージョン 概要 日付 WinG、Display Control Interface Windows 3.1時代。 DirectX 1.0 ゲーム開発用のAPI集Game SDKとして発表された。DirectDraw、DirectSound、DirectPlayが含まれていた。 1995年9月30日 DirectX 2.0 Direct3D (Immediate Mode, Retained Mode) の登場。 1996年6月 DirectX 3.0 DirectSound3D登場、DirectInputの統合。Windows NT 4.0ではSP3以降に同梱。 1996年9月25日 ActiveMovie1 DirectShowの前身。ActiveXの1コンポーネントであり、DirectXには含まれない。 1996年11月5日 DirectX 5.0 Direct3DにDrawPrimitive(OpenGLのようなプリミティブ単位の描画機能)が登場。Windows 98にはDirectX 5.2が搭載された。 1997年8月4日 DirectX Media DirectShowおよびDirectAnimationのみ頒布。「DirectX」は総称だが、特に区別する場合は「DirectX Foundation」「DirectX Media」と使い分けることがある。 1997年12月1日 DirectX 6.0 3D描画向けの「Direct3D」の強化、AMD提唱の3D向け命令セット「AMD 3DNow!」への対応や、ジオメトリパイプラインの見直し、テクスチャデータ圧縮機能のサポートなどにより高速化が図られたほか、シングルパス・マルチテクスチャやバンプマッピングのサポートなど表現力の向上。 1998年8月7日 DirectX 6.1 DirectMusic登場。SSEのサポート。Windows 98 SEに搭載。 1999年2月3日 DirectX 7.0 Visual Basicをサポート、Direct3Dの機能強化(ハードウェアT&Lのサポートなど)。Windows 2000に搭載され、NT系列でも最新機能が使えるようになった。 1999年9月22日 DirectX 7.1 Windows Meに搭載された。 2000年 DirectX 8.0 DirectDrawとDirect3Dが統合されてDirectX Graphicsに、DirectSoundとDirectMusicが統合されてDirectX Audioと呼ばれるようになった。Windows 2000および9x系で使用可能。原始的なプログラマブルシェーダーが搭載された。 2000年11月9日 DirectX 8.1 Windows XPに搭載。Windows 2000・Me・98用に単体配布もされている。このバージョンより95が対象外となった。 2001年 DirectX 8.2 Windows 2000およびWindows XPで使用可能。短期間配布された。 2002年 DirectX 9.0 各コンポーネントの機能強化が中心。高レベルシェーダー言語HLSLが導入された。また、マイナーチェンジとなるDirectX 9.0cがWindows XP SP2に搭載された。Windows 2000・Me・98用に単体配布もされている。この頃から、DirectXのバージョンが上がっても、更新されるのはDirect3Dだけとなりつつあり、DirectX 9.0といえばDirect3D 9.0のことを指すことになる。 2002年12月20日 DirectX 10.0 Windows Vista以降でのみ利用可能。DXGIやジオメトリシェーダーが導入された。 2006年 DirectX 10.1 Windows Vista SP1以降でのみ利用可能。GPUの仮想化技術の実装。 2008年 DirectX 11.0 Windows Vista SP2 + Platform UpdateとWindows 7以降で利用可能。高精細な描画を可能にするテッセレーションのサポートや新たな命令セットが追加されたほか、GPUコンピューティングを実現するDirectCompute (DirectX Compute Shader)、マルチコアCPUに対応したマルチスレッディング処理、HDR圧縮などの新機能を実装している。高レベル2DグラフィックスAPIであるDirect2Dなども含まれる。 2009年 DirectX 11.1 Windows 8以降で利用可能。WinRT相互運用やDirect2Dの大幅な機能強化なども含まれる。一部機能はWindows 7にもPlatform UpdateとしてバックポートされたDirectX 11.1 and Windows 7 | Games for Windows and the DirectX SDK blog。 2012年 DirectX 11.2 Windows 8.1以降とXbox Oneでのみ利用可能。 2013年 DirectX 11.3 Windows 10以降でのみ利用可能。DirectX 12に搭載される新機能の一部は、同時期に提供される従来からの高レベルAPIのマイナーチェンジとなるDirectX 11.3にも搭載されるDirectX 12's new rendering features are coming to DirectX 11.3 too | PC GamerDirectX 12 Lights Up NVIDIA’s Maxwell Launch - DirectX Developer Blog西川善司の3DGE:新しく来るDirectXは「12」だけじゃない。突如浮上した「DirectX 11.3」とは何か? - 4Gamer.net。 2015年 DirectX 12 Windows 10以降でのみ利用可能。高レベルだがオーバーヘッドの大きかったDirect3D 11までと比べて、Direct3D 12はよりハードウェアに近いローレベルな制御を可能とするAPIとなったDirect3D 12 特集 | iSUS。 2015年 DirectX 12 Ultimate Windows 10バージョン2004以降でのみ利用可能。 2020年
DirectX 4はリリースされなかった。Raymond Chenの著書The Old New Thing(邦訳:Windowsプログラミングの極意 歴史から学ぶ実践的Windowsプログラミング!)によると、DirectX 3がリリースされた後に、マイクロソフトは後継のバージョン4と5の開発を同時に始めた。バージョン5がより実りの多いものになる予定だったのに対し、バージョン4は小幅な機能拡張を伴う短期リリース版となる予定だった。しかしDirectX 4に実装される予定の機能はゲーム開発者の興味をそそらず、そのためDirectX 4はキャンセルされ、すべての機能をDirectX 5に組み込むことになったが、すでに執筆されていた多数のドキュメント内ではこれら2つのバージョンを明確に区別していた。マイクロソフトは混乱を避けるため、バージョン5をバージョン4にリネームするようなことはせず、バージョン4をスキップすることにした。
2026年3月、MicrosoftはGDC 2026内で行った「DirectX State of the Union: DirectStorage and Beyond」において、今後のDirectXの更新の方針について触れ、従来のバージョン表記方式で大幅な仕様変更を加えるのではなく、新しいバージョン命名法則に基づいて、機能の更新を不定期に行っていく方針に転換したことを発表した。
歴史 1994年終盤、マイクロソフトはWindows 95をリリースしようとしていたが、当時のプログラマは、Windows 95よりもむしろDOSの方がゲームプログラミングに適していると考える傾向にあった。「どのようなプログラムを作れるか」というのはOSの評価基準として大きなウェイトを占める。マイクロソフトの三人の社員、クレイグ・アイスラー (Craig Eisler)、アレックス・ジョン (Alex St. John)、エリック・イングシュトローム (Eric Engstrom) は、この傾向を危惧していた。
DOSの環境下では、プログラムはビデオカード、キーボード、マウス、サウンドカードなど様々なシステムパーツに直接アクセスできていたが、Windows 95ではメモリ保護のためにこれらの直接のアクセスが制限されてしまっていた。あと数か月でWindows 95がリリースされるという中で、マイクロソフトはWindows 95におけるプログラムの自由度を上げる仕組みを作り上げなければならなかった。アイスラーとジョンとイングシュトロームの三人はこれらの問題解決に乗り出した。こうして作られたのがDirectXである。
DirectXの開発プロジェクトには「The Manhattan Project」というコードネームが付けられた。後年のによるアレックス・ジョンへのインタビューによると、これは第二次世界大戦における原子爆弾の開発プロジェクト「マンハッタン計画」をなぞったもので、日本製のゲームコンソールをPCで(究極的にはXboxで)押しのけるための取り組みであったからだという。またプロトタイプのDirectXのロゴには、放射能標識に似たものが用いられていたが、マイクロソフトの広報によって差し止められ、「X」の形状にするために脚を1本加えたロゴGitHub - microsoft/DxCapsViewer: DirectX Capabilities Viewer utility (dxcapsviewer.exe)に変更された。なお、その後もバージョン6までのDirectXには大量破壊兵器にちなんだと推測される開発コードネームが付けられていたWhere did DirectX code names come from? - The Old New Thing。
DirectXの開発メンバーたちは、社内で「Beastie Boys」(野蛮な若者)と呼ばれ、クビの圧力にさらされながら開発を進めた。マイクロソフトの経営陣は当初、Windowsをゲームプラットフォームにする気がなかったため、彼らの活動を評価していなかったDirectXの生みの親の1人が55歳で死去。社内で「Beastie Boys」と呼ばれた反骨者たちの功績 | ハーバー・ビジネス・オンライン。
1995年8月(日本では同年11月)にWindows 95がリリースされた後、DirectXの最初のバージョンは「Windows 95 Game SDK」として1995年9月にリリースされた。これはWindows 3.1にあったWinG APIとDCI (Display Control Interface) を32ビット用に移植したものである。このとき、マイクロソフトはATIの開発チームからゲームグラフィックの基本部分についての技術提供を受けた。これ以降、アイスラー(開発リーダー)、ジョン、イングシュトローム(プログラム責任者)の三人のチームを中心としてDirectXの開発が進められ、最終的にはこれ以降のすべてのWindowsにおいてDirectXがマルチメディア機能を担うことになった。DirectX 1から5までの開発でのドタバタは、アイスラーのブログに詳しく書かれているCraig's Musings: DirectX Then and Now (Part 1)。