Microsoft DirectX

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をスキップすることにした。

 歴史 
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)。

DirectXの登場より前に、マイクロソフトはOpenGLをWindows NTに搭載してしまっていた。OpenGLは、動作に（当時においては）ハイスペックな環境が必要だった上に、用途もCADやエンジニアリングに限られていた。そんな中Direct3Dは、ゲーム用としてはオーバースペック気味だったOpenGLの軽量版として設計され、ここからDirect3DとOpenGLとの、ユーザー同士の対立が始まった。Windows専用だったDirect3Dはマイクロソフトの3E戦略（embrace, extend, extinguish―吸収、拡大、根絶）だとOpenGLユーザーから非難されることとなった。しかしDirectXには、サウンドやジョイスティックなど、OpenGLがカバーできない機能が含まれていたため、DirectX上の他のAPIとOpenGLとを組み合わせて使われることが多かった。後にはOpenGLとSDLの組み合わせも多い。OpenGLはDirect3Dが先行して実装したジオメトリシェーダーやコンピュートシェーダーといった機能を数年遅れで取り入れるなど、Direct3Dの影響を受けている部分があるIGDA Japan chapter - Khronos Group、OpenGL 3.2を発表 12ヵ月で3回目のバージョンアップ Direct3Dアプリケーションからの移植性に関する記述がある。ジオメトリシェーダーを搭載したDirectX 10のリリースは2006年、対するOpenGL 3.2のリリースは2009年。4Gamer.net ― OpenGLはDirectX 11を超え，OpenGL ESは据え置き型ゲーム機と同等以上に。Khronosの最新動向レポート DirectX 11のCompute Shader仕様をそのまま取り入れた旨の記述がある。。

PCだけでなくコンシューマーやアーケードのゲーム機でも、OSとしてWindowsを採用し、ゲーム開発用APIとしてDirectXが利用されるケースも出始めた。1998年（北米では1999年）に登場したセガのドリームキャストでは、Windows CEとともにDirectX 5.0のカスタマイズ版が世界で初めて用いられたセガ、Windows CEをベースとした新世代ゲーム機「Dreamcast」を発表WindowsCE SDK for Dreamcast。その後、WindowsとDirectXは2001年（日本では2002年）に登場したマイクロソフトの初代Xboxでも採用された。OSはWindows 2000を軽量化したカスタマイズ版だが、HDDではなく各ゲームのDVD-ROMから読み込んでブートする形式だったX-Box解析シリーズ「OSとCPU編」 | 後藤弘茂のWeekly海外ニュース。XboxのコンソールAPIはマイクロソフトとNVIDIA（Xboxのカスタムグラフィックスチップの開発元）で共同開発された。Xbox APIはDirectX 8.1に近いが、コンソール上からアップデートができないところがPCや他のコンソールと異なる。XboxのコードネームはDirectXboxだったが、商品名は短縮してXboxとなったJ. Allard, PC Proのインタビュー 2004年4月。

2001年にリリースされたWindows XPには、DirectX 8.1が標準搭載された。

 DirectX 9のリリース 
2002年にマイクロソフトは、以前よりもはるかに長いシェーダープログラムを扱えるシェーダーモデル2.0（頂点シェーダー2.0、ピクセルシェーダー2.0）と高級シェーディング言語HLSLをサポートしたDirectX 9をリリースした。2004年8月にはさらに機能を強化したシェーダーモデル3.0を導入したDirectX 9.0cをリリースし、それ以降もD3DXやXAudio2といった拡張ライブラリやOS非標準コンポーネントを中心にDirectX SDKおよびエンドユーザーランタイム一式の更新が続けられた。

DirectX SDK February 2005を最後に、DirectShowはDirectX SDKから取り除かれ、代わりにMicrosoft Platform SDKへ移動された（DirectX SDK April 2005以降にはDirectShow関連ファイルが含まれない）。しかしPlatform SDKに付属するDirectShowのサンプルをビルドするためにはDirectX SDKが必要であるDirectShow Samples - Win32 apps | Microsoft Learn。

2005年に登場したXbox 360には、Windows 2000のカスタム版が搭載された。GPU (Xenos) はATI製で、機能的にはDirectX 9.0c世代だが、DirectX 10世代GPUの特徴である統合型シェーダーアーキテクチャを先行して採用していた3Dグラフィックス・マニアックス(5) GPUとシェーダ技術の基礎知識(5) | マイナビニュース。

 DirectX 10のリリース 
2006年にリリースされたDirectX 10は、WDDM/DWM/DXGI 1.0とともにWindows Vista専用として提供され、Windows XP以前のOSにはバックポートされなかった。

なお、Windows Vista以降には、Direct3D 10とともに、WDDMに対応したDirect3D 9の改良版としてDirect3D 9Exも搭載されている。Windows VistaのWindows AeroはDirect3D 10ではなく9Exで描画されており、グラフィックスハードウェアがDirect3D 10（シェーダーモデル4.0）に対応していなくとも、Direct3D 9（シェーダーモデル2.0/3.0）世代のハードウェアとWDDM 1.0に対応したデバイスドライバーがあればAeroが利用可能となっている。Direct3D 9ExはのちにWindows 7でフリップモードが追加されているDirect3D 9Ex の機能強化 - Win32 apps | Microsoft Learn。

DirectX SDK August 2007を最後に、DirectMusicはDirectX SDKから取り除かれたDirectX SDKs of a certain age | Games for Windows and the DirectX SDK blog。

2008年にはWindows Vista SP1と同時に、DirectX 10のマイナーバージョンアップとしてDirectX 10.1がリリースされたDOS/V POWER REPORT | Impress Japan。

 DirectX 11のリリース 
2009年、Windows 7と同時にDirectX 11がリリースされた。DirectX 11のうち、GPGPUのために導入されたAPIであるDirectComputeについては、当初はDirectX 11（シェーダーモデル5.0）世代のハードウェアのみに対して提供される予定だったが、2008年11月に開催されたハードウェア技術者向け国際会議「WinHEC 2008」にて「DirectX 10世代のハードウェアでもサポートする」との発表があった。最終的に、DirectX 10.x（シェーダーモデル4.x）世代のGPUでも、DirectX 11 APIを通してDirectComputeが利用できるようになったAMDのGPGPU戦略は新章へ - ATI Streamの展望、DirectX Compute Shaderの衝撃 (4) 今後のGPGPU動向は? | マイナビニュースASCII.jp：GPGPUをWindowsでサポートする「DirectCompute」 (2/2)｜あなたの知らないWindows。なおWindows Vista SP2およびWindows Server 2008 SP2向けのプラットフォーム更新プログラムKB971644には、DirectX 11のバックポートが含まれている。

DirectX 11.0のリリース後、Windows 8/8.1向けにそのマイナーアップデート版としてDirectX 11.1/11.2がリリースされた。Windows SDK 7.1およびDirectX SDK June 2010までは、Windows SDKとDirectX SDKとが別々に提供されてきたが、Windows SDK 8.0ではDirectX SDKと統合された。つまり、DirectX 11.1/11.2の開発環境は、Windows SDK 8.0/8.1に統合されることになった。Visual Studio 2012/2013には、それぞれWindows SDK 8.0/8.1がバンドルされている。なお、Windows SDK 8.0以降では後述するようにいくつかの補助ライブラリが廃止されているものの、DirectX 9/10/11のコアライブラリは含まれているため、Windows XP/Vista/7向けのDirectXアプリケーションを開発することも可能である。しかし、Windows SDK 8.0/8.1に同梱されているXAudio2 (v2.8) はWindows 8以降でしか利用できないため、旧OS上でも利用可能なXAudio2 (v2.7以前) を利用するアプリケーションを開発する場合は旧DirectX SDKが別途必要となる。

2013年3月に、Windows 7 SP1およびWindows Server 2008 R2 SP1向けのプラットフォーム更新プログラムKB2670838がリリースされた。この更新プログラムには、DirectX 11.1のバックポートも含まれている。なお、KB2670838の副作用として旧DirectX SDKに付属するグラフィックス分析ツールPIX for Windowsが動作しなくなるDirectX 11.1 and Windows 7 Update | Games for Windows and the DirectX SDK blog。DirectX 11.1がインストールされた環境では、代わりにVisual Studio 2012以降に統合されているGraphics Diagnosticsを使う必要があるが、Windows 7上では一部の機能が利用できない方法: アプリケーションのグラフィックス診断を無効にする。

 DirectX 12のリリース 
DirectX 11は2009年にリリースされてからDirectX 11.1/11.2のようなマイナーチェンジに終始し、メジャーアップデートとなるDirectX 12のロードマップは長らく示されていなかった。その間、OpenGLは組み込み向けのOpenGL ESとともに順調にバージョンアップを重ね、DirectX (Direct3D) に追いつくだけでなく一部ではDirectXを超える機能をサポートし始めていた4Gamer.net ― ［SIGGRAPH］Khronos，OpenGL 4.1を発表。カンファレンスからその詳細を確認する4Gamer.net ― ［SIGGRAPH］ついにDirectX 11を凌駕した!? Khronosに聞く「OpenGL 4.2」の正体4Gamer.net ― OpenGLはDirectX 11を超え，OpenGL ESは据え置き型ゲーム機と同等以上に。Khronosの最新動向レポート4Gamer.net ― ValveはなぜSource EngineをLinux＋OpenGL環境へ移植したのか。GTC 2013のValveセッションレポート。また、AMDは従来のDirectXやOpenGLよりもハードウェアに近いローレベルな制御を可能とする独自APIとして2013年にMantleを発表した2013*年末企画『AMDの新グラフィックAPI“Mantle”その一連の動向に迫る』 | Game*Spark - 国内・海外ゲーム情報サイトAMD独自グラフィックスAPI「Mantle」の詳細が明らかに。理論上はGeForceのMantle対応も可能!? - 4Gamer.net。

DirectXが最先端のリアルタイムグラフィックスシーンを牽引していた時代から変化を迎えつつあったが、GDC 2014ではついにDirectX 12の発表が行なわれ［GDC 2014］DirectX 12，ついに発表。その特徴に迫る - 4Gamer.net、特にDirect3D 12に関してはDirect3D 11までの高レベルAPIを刷新し、オーバーヘッドを低減したゲームコンソールに近いローレベルな制御を可能とするグラフィックスAPIとなることが明らかにされた。

DirectX 12はWindows 10専用としてそれに標準搭載される形で2015年7月に正式リリースされ、コマンドキューベースの効率的なマルチスレッドレンダリング機能や、マルチGPUによる分散レンダリングの標準化など、近代的なハードウェア設計に沿う形で革新的な多数の機能を備えるに至っているWindows 10 | GeForceWindows 10環境におけるRadeonとAPUの優位性をAMDがアピール。DX12世代ではマルチGPUのトレンドが変わるか - 4Gamer.net。

一方で、従来の手厚い高レベルレイヤーであるDirectX 11にも、DirectX 12で導入された新機能の一部が盛り込まれる形で、DirectX 11.3/11.4のようにDirectX 12と平行してアップデートが継続されている。

2018年にリリースされたWindows 10 October 2018 Updateでは、 (DXR) の機能が追加された。アップデートされたDirectX 12 APIを通じて、DXR対応ハードウェア上でリアルタイムレイトレーシングを実行できるようになったDirectX Raytracing and the Windows 10 October 2018 Update - DirectX Developer Blog。また、Windows 10バージョン1903では、DirectX 12をベースに実装された機械学習用のローレベルAPIとして、DirectMLが追加されたDirect Machine Learning (DirectML) | Microsoft Docsインテル® インテグレーテッド・グラフィックス上のマシンラーニングを高速化する Windows® 10 May 2019 Update。

 DirectX 12 Ultimateのリリース 
サムネイル|140px|DirectX 12 Ultimateのロゴ
マイクロソフトは2020年3月、「DirectX 12 Ultimate」を発表した。PCとXbox Series Xのグラフィックスプラットフォームを統一し、ゲームエコシステム全体の拡大を図ることを目的としている。Windows 10バージョン2004以降で利用可能。

DirectX 12 Ultimateは以下の4つの技術から成る。下位互換性があるので、DirectX 12 Ultimateに対応しているハードウェアはDirectX 12を使用する既存のアプリケーションを実行することもできる。
 DirectX Raytracing 1.1 (DXR 1.1): リアルタイムレイトレーシングを実現するグラフィックスAPIの次期版。マイクロソフトとNVIDIAが共同開発。
 Variable Rate Shading (VRS): シェーダーのピクセル解像度を状況に応じて変化させることで、見た目に影響を与えず描画を高速化。
 Mesh Shaders: Turing世代のNVIDIA製GPUに追加されたシェーダー。
 Sampler Feedback: 不要な計算を省いてレンダリング負荷を下げる技術の一つ。

 補助ライブラリ 
DirectXのうち、Direct3Dにはマイクロソフト純正の補助ライブラリとして、 (Direct3D Extension) と呼ばれるDirect3D拡張ライブラリが存在するDirect3D エクステンション (D3DX) C/C++ リファレンスD3DX (Direct3D 9)。Direct3D自体はバッファ／テクスチャメモリの管理やプリミティブの描画といった比較的ローレベルかつ最低限の機能しか持たないが、D3DXには3Dグラフィックスプログラミングで必要となる算術演算、スプライト、メッシュ／テクスチャの読み書きといった比較的高レベルの機能が実装されている。主にDirect3D 9向けのD3DX9、Direct3D 10向けのD3DX10、そしてDirect3D 11向けのD3DX11およびD3DCSX11が存在する。多くのD3DX機能はd3dx9_XX.dll、d3dx10_XX.dll、d3dx11_XX.dllなどのコンポーネントに、C/C++用の関数・クラスや、COMインターフェイスとして実装されている。D3DXランタイムはDirect3D本体（コアコンポーネント）とは異なり、前述のようにWindows OSのセットアップやWindows Updateによるシステム更新ではインストールされず、またアプリケーションの開発に使用したDirectX SDKのバージョンによって必要となるDLLが異なるため、エンドユーザー環境でD3DXを使用するためにはDirectXエンドユーザーランタイムのインストールが必要となる。エンドユーザーランタイムのインストーラー最終バージョンでは、過去のDirectX SDK（June 2010まで）に対応するランタイムがすべてインストールされる。

Windows SDKとDirectX SDKが統合されたWindows SDK 8.0では、D3DXは（D3DCSX11を除いて）廃止され、SDKに新しいバージョンが同梱されなくなっているLiving without D3DX | Games for Windows and the DirectX SDK blog。廃止されたD3DXの代わりに、Windows SDK 8.0以降では算術ライブラリとしてDirectXMathDirectXMath (Windows)Introducing DirectXMath | Games for Windows and the DirectX SDK blogが標準提供されている。また、DirectXTK、DirectXTex、DirectXMesh といったオープンソースのC++専用補助ライブラリが開発され、MITライセンスでGitHubにて公開されている（開発当初はMs-PLライセンスでCodePlexにて公開されていた）。なおWindows 8およびVisual Studio 2012以降でも旧DirectX SDKをインストールするか、DirectXエンドユーザーランタイムをインストールすることでD3DXを利用することは可能だが、Windowsストアアプリ（WinRTアプリ、Modern UIアプリ）の開発ではD3DXを使用することはできず、D3DXを使用できるのはデスクトップアプリケーションのみとなっている。

そのほか、旧DirectX SDKにはDXUTと呼ばれるフレームワークがソースコードごと同梱されており、SDKに付属するマイクロソフト公式のサンプル実装に使われていたほか、NVIDIA・インテル・AMDといったハードウェアベンダーが独自に作成・公開するDirectXサンプルにもフレームワークとしてしばしば使われていたが、DXUTもWindows SDK 8.0以降には同梱されない。DXUT自体はDirectX 11.x用のもの (DXUT11) がGitHubにて公開・メンテナンスされているMicrosoft/DXUT · GitHub。Effects 11 (FX11) と呼ばれるシェーダーエフェクトフレームワークも、DXUT同様にGitHubに移管されているMicrosoft/FX11 · GitHub。また、Visual Studio 2012以降には、Direct3D/Direct2DベースのWinRTアプリケーションプロジェクトテンプレートが含まれている。

旧DirectX SDKの最終バージョンJune 2010がサポートするVisual Studioはバージョン2008/2010のみDownload DirectX SDK - (June 2010) from Official Microsoft Download Centerだが、旧SDKに付属していたサンプルのうち、多くはVisual Studio 2012以降向けに更新されたものがMSDN Code Galleryに移管されているDirectX SDK Samples Catalog | Games for Windows and the DirectX SDK blog。この更新によってD3DXなどの廃止されたライブラリへの依存も排除されている。MSDN Code Galleryの廃止に伴い、これらのサンプルはGitHubに移管された。

なお、DirectX Graphics SamplesがMITライセンスでGitHubにて公開されており、DirectX 12のサンプルおよびユーティリティライブラリが含まれている。例として、Direct3D 12用のC++ヘッダーベース補助ライブラリであるD3D12 Helper Library (d3dx12.h)Helper Structures and Functions for D3D12 | Microsoft DocsDirectX-Graphics-Samples/Libraries/D3DX12 at master · Microsoft/DirectX-Graphics-Samples、DirectX 12 EngineのStarter KitであるMiniEngineDirectX-Graphics-Samples/MiniEngine at master · Microsoft/DirectX-Graphics-Samples、Direct3D 12用メモリ管理ライブラリであるD3D12 Residency Starter LibraryDirect3D 12 Programming Environment Setup | Microsoft DocsMemory Management in Vulkan and DX12 P.33 AMD 2018年DirectX-Graphics-Samples/Libraries/D3DX12Residency at master · Microsoft/DirectX-Graphics-Samplesなどが含まれている。

 .NET Framework用ラッパー 
かつてDirectX 7.0およびDirectX 8.0でC++向け以外にVisual Basic用のインターフェイスが提供されたものの、基本的にDirectXはC++言語専用のAPIである。ここでは.NET Framework言語環境向けにラップされたマネージコードライブラリを紹介する。

 Managed DirectX (MDX) 
Managed DirectXは.NET Frameworkで動作するアプリケーションからDirectXを呼び出すためのAPIである。Managed DirectXを使うと、.NET Framework上で動作するどんな言語からでもDirectXを呼び出すことができる。また、テクスチャオブジェクトをSystem.Drawing.Bitmapオブジェクトから生成できるなど、.NET Frameworkとの相互運用も強化されている。なお、Managed DirectX 1.1のグラフィックスコンポーネントはDirect3D 9およびD3DX 9を内部で使用している。Managed DirectX 1.1の開発環境はDirectX SDKに、実行環境はDirectXエンドユーザーランタイムに同梱されている。

Managed DirectX 1.1の後継であるManaged DirectX 2.0の開発は中止され.NET開発者のためのDirectX連携手法 － ＠IT、Microsoft XNA (XNA) に置き換えられることになった。

 Microsoft XNA 

XNAおよびXNA Game StudioはWindows、Xbox 360、Windows Phone、およびZune用のマルチプラットフォーム対応ゲーム開発環境・実行環境である。対応するアプリケーション開発言語はC# (Visual C#) のみであり、VB.NETやC++/CLIなどの他の.NET言語からは利用できない。グラフィックスコンポーネントの内部ではDirect3D 9が使用されている。2014年4月に開発・サポートを終了したマイクロソフト、ゲーム開発環境「XNA」を2014年4月に終了 | GGSOKU - ガジェット速報。

 SlimDX 

Managed DirectX 2.0はキャンセルされたが、後継のXNAは基本的にC#からしか利用できない上、Xbox 360とWindows双方に互換性のあるコードを記述することを主目的として開発されており、Managed DirectXの方向性とはやや異なるAPI（ゲームアプリケーション向けのフレームワーク）となっている。このため、Windowsプラットフォームにおける.NET用にDirectXのAPIをカプセル化した、SlimDXと呼ばれるライブラリが有志によって開発・提供されていたが、2012年1月を最後に更新されておらず、公式サイトも2019年現在は消失している。SlimDXはMDXのように、Direct3Dコアライブラリに加えてDirect3D拡張ライブラリであるD3DXもカバーする。

 SharpDX 
SharpDXはDirectX Graphics、DirectX Audio、DirectX Inputなどのマネージラッパーを提供するオープンソースのプロジェクトであるHome | SharpDX。ライセンス形態はMITライセンスとなる。SharpDXは従来のデスクトップアプリのほか、Windowsストアアプリからも利用できる。バージョン2.6.3時点でDirectX 9、DirectX 10、DirectX 11をサポートするsharpdx/SharpDX at 2.6.3 - C#。Windows 10と同時に正式リリースされたDirectX 12 (Direct3D 12) も、バージョン3.0にて対応したが、DirectX 10 (Direct3D 10) など一部のレガシーAPIのサポートが終了しているRelease Latest stable release · sharpdx/SharpDX。2019年5月をもって、開発を終了することがアナウンスされたsharpdx/SharpDX: SharpDX GitHub Repository。

 Windows API Code Pack for Microsoft .NET Framework 
マイクロソフトによる公式のマネージコード用ライブラリ。Windows VistaやWindows 7の拡張的なUI機能等の対応Windows 7の新機能をC#やVBで利用するには？ － ＠ITが主な内容だが、DirectX 10以降のサポートも含まれている。2009年4月からアルファ版が公開されていたが、同年8月6日にバージョン1.0に移行した。Windows API Code Packでは、以下のDirectX APIがサポートされている。
 Direct3D 11.0
 Direct3D 10.0/10.1
 DXGI 1.0/1.1
 Direct2D 1.0
 DirectWrite
そのほか、Windows Imaging Component (WIC) のサポートも含まれるが、DirectWriteとWICは部分的なサポートにとどまる。

Windows API Code Pack 1.1のリンクは2015年9月現在消失しており、ダウンロードできなくなっているWindows API Code Pack の過去、現在、そして未来 - オペレーティングシステム開発統括部 - Site Home - MSDN Blogs, Internet Archiveが、NuGet経由で1.0.0をダウンロードできるNuGet Gallery | Windows 7 API Code Pack 1.0.0。

 OpenGLとの関係 

DirectXのうちDirectX Graphics (Direct3D) は、同じくリアルタイム3次元コンピュータグラフィックス (3DCG) を扱うためのAPI集合であるOpenGLとしばしば比較される。

 用途 
主な違いは、DirectXは基本的に3DグラフィックスAPIのみに限定されるものではなく、サウンド処理やヒューマンデバイス入出力処理、ネットワーク処理までを内包する総合的なマルチメディアアプリケーション（代表的なものはゲームなど）の開発用API/SDKを指向するものである一方、OpenGLは純然たる3DグラフィックスAPIとして設計されている点にある。またDirectXはWindowsや、Windows系OSを採用したDreamcastやXboxシリーズなどのゲーム機といった限られたプラットフォームでしかサポートされないのに対し、OpenGLはクロスプラットフォームであるという点である。

DirectXはその出自から、主にWindows用ゲームの分野で使用されてきたが、Direct3Dに関しては同環境における標準的な3DグラフィックスAPIとしても用いられるようになり、ゲームに限らない一般的な3DアプリケーションやOSのグラフィカルシェル環境にまで用いられるようになったAero Glass: Create Special Effects With The Desktop Window Manager | Microsoft Learn。また、Direct2D/DirectWriteはIEやFirefoxといったWebブラウザーにおけるレンダリングエンジンのハードウェアアクセラレーターとして採用されている。

一方のOpenGLは、歴史的および機能的な理由から、3DCGの製作工程やCAD、データ可視化などの用途に、グラフィックスワークステーションやEWS等のプロフェッショナルな分野で使用されてきた。またパーソナルユーザー向けの3Dデスクトップ環境において標準的な描画APIとしても用いられており、これらの環境では3DビデオゲームのグラフィックスAPIとしても標準的な立場にある。このように、両者をその用途によって明確に区別することは困難となりつつある。

また、Direct3Dが標準的な3DグラフィックスAPIとして定着したPC/Windows系の環境においてもOpenGLは今なお共存しており、実際にDirectXの登場以前から登場初期頃には、PC (Windows) 用ゲームの3DグラフィックスAPIとしてOpenGLや、OpenGLを簡略化し3dfx社製グラフィックスカードVoodooの専用APIとしたGlideがデファクトスタンダードとして用いられてきた歴史もあり、両者を比較する文脈においてよく言われるような単純な競合関係として説明することも、実態として困難と言える。Windows環境においては、3DCG製作ソフトにおける作業中のリアルタイムプレビュー表示に、Direct3DとOpenGLのうちどちらを使用するかをユーザーが選択できるものも存在する。AutoCADAutoCAD 2008 の動作環境やVectorworksCountdown 2022：新機能紹介 vol.3 – Vectorworks Design Blogのように、かつてはWindows版においてもOpenGLを使用していたCADソフトウェアでも、比較的新しいバージョンではDirectX (Direct3D) を使用するようになっているものもある。

 グラフィックスドライバー 
WindowsがOS標準機能でサポートするOpenGLバージョンは1.1までOpenGL - Win32 apps | Microsoft Docsであり、グラフィックスハードウェア (GPU) ベンダーが提供しているOpenGL対応ドライバー (Installable Client Driver, ICD) をインストールするまで、（たとえハードウェアがOpenGL 1.2以降をサポートしていても）OpenGL 1.2以降の機能を使用することはできない。また、OpenGL 1.2以降で追加された関数を使用するには、ICDがインストールされた状態で、wglGetProcAddress()関数を使用してエントリポイント（関数ポインタ）を取得する必要があるwglGetProcAddress function (wingdi.h) - Win32 apps | Microsoft Docs。ICDがインストールされていない状態では、ソフトウェアやDirect3DラッパーによるOpenGL 1.1実装が使用されるGetting Started - OpenGL Wiki。

Windows Vistaには最初からグラフィックスドライバーがプリインストールされているが、そのドライバーのOpenGLレイヤーはソフトウェア実装であり、OpenGLを利用したグラフィックスソフトウェアを満足に動作させることはできないRhinoはVistaで動作しますか? [McNeel Wiki]。グラフィックスハードウェアベンダーのICDをインストールするまで、OpenGL APIによってハードウェアアクセラレーターを直接駆動することはできないOpenGL and Windows Vista - Windows Performance Blog - Site Home - MSDN Blogs, Internet ArchiveDailyTech - OpenGL Now Natively Supported in Windows Vista, Internet ArchiveLoading an OpenGL Installable Client Driver - Windows drivers | Microsoft Docs。

 ANGLE 
Googleのangle/angle - Git at Googleプロジェクトのように、OpenGLそのものではなく、内部でDirect3Dを使用したラッパーを経由して、Windows上でWebGLやOpenGL ESを間接的に実現するライブラリも存在する。ANGLEはハードウェアベンダーのOpenGLドライバー（ICD）を経由せず、Direct3Dを利用してOpenGL ES APIを実現しているWindows上でANGLEを使って、WebGLレンダリングCEDEC 2015まとめ：ゲームバー、Cortana、Edge、HoloLens、Bridge、DirectX 12、ANGLE――Windows 10はゲーム開発者に何をもたらすのか (4/5) - ＠IT。

 GPGPU 
DirectXはバージョン11において、GPGPU用APIであるDirectComputeをDirect3Dの一部（コンピュートシェーダー）として包括的に実装している。OpenGLもまたバージョン4.3において、Direct3Dと同様のコンピュートシェーダーを導入している。なお、Direct3D/OpenGLともに、GPGPUを含むクロスプラットフォームなヘテロ環境用アクセラレーターAPIであるOpenCLとの連携（相互運用）を行なう拡張機能が用意されているKhronos OpenCL RegistryOpenCL 1.2 Reference Pages。

 脚注 

 注釈 

 出典 

 関連項目 
 Windows API
 Component Object Model
 Direct3D
 DirectCompute
 Windowsストア
 NVIDIA GeForce
 AMD Radeon

 外部リンク 
 最新版の DirectX をインストールする方法 - Microsoft サポート

*
Category:グラフィックカード
Category:ライブラリ (プログラミング)
カテゴリ:グラフィックライブラリ
Category:マイクロソフトのAPI
Category:Windowsのコンポーネント
Category:1995年のソフトウェア
Category:3DCG