PCゲームのDirectX 11とDirectX 12はどっちがいい?FPS・カクつき・クラッシュの違いと選び方【2026年版】
本記事にはアフィリエイト広告(Amazon・楽天市場等)のリンクが含まれています。
番号が新しい方が必ず速いとは限りません。症状と環境を比較して判断する基準を整理します
出典:Microsoft Learn「Direct3D 11 から Direct3D 12 への重要な変更点」「Direct3D 12 プログラミング ガイド」「Porting from Direct3D 11 to Direct3D 12」「Hardware Feature Levels」、Microsoft DirectXブログ「Announcing DirectX 12 Ultimate」、Epic Games公式ドキュメント「Unreal Engine で PSO キャッシュを使用してレンダリングを最適化する」「PSO Precaching for Unreal Engine」「Manually Creating Bundled PSO Caches in Unreal Engine」にもとづきます。
「DirectX 12を選べば速くなるはず」「DirectX 11は古いから使う理由がない」——グラフィック設定でAPIを選べるPCゲームに触れると、こう考えたくなります。しかし実際には、同じゲーム・同じPCでもDX11とDX12で平均FPSが逆転したり、DX12にした途端にカクつきやクラッシュが増えたりすることがあります。DirectX 11とDirectX 12は単なる「旧バージョンと新バージョン」ではなく、GPUへの処理の渡し方そのものが異なる別方式のAPIだからです。
Microsoft公式ドキュメント「Direct3D 11 から Direct3D 12 への重要な変更点」によると、Direct3D 12はDirect3D 11よりもハードウェアに近いレベルで処理を制御でき、複数スレッドから並行してコマンドを準備することでCPU側の効率を高められます。その代わり、同期やメモリ常駐の管理など、Direct3D 11ではドライバー側にまかされていた処理の多くを、ゲーム側がより明示的に担当する設計になっています。DX12は性能を引き出せる可能性が高い一方、その性能はゲーム側の実装やGPUドライバーとの組み合わせに左右されやすいAPIでもあります。
gaming-st.comではこれまで、パルワールドのDirectX 12とDirectX 11はどっちが速いかのようにゲーム別の実例や、DirectX 12特有のVideo Memory Budgetの仕組みを個別に扱ってきました。この記事はそのどちらとも異なり、特定のゲームや症状に絞らず、「そもそもDX11とDX12はどちらを基準に選べばいいのか」という一般的な判断軸を、Microsoft・Epic Games両社の公式資料にもとづいて整理します。
目次
仕組みDirectX 11とDirectX 12は何が違うのか
ゲームの設定画面には「DirectX 11/12」と表示されますが、厳密に比較されているのはグラフィックスAPIであるDirect3D 11とDirect3D 12です。Microsoft公式ドキュメント「Direct3D 11 から Direct3D 12 への重要な変更点」によると、Direct3D 11ではGPUへ送る処理の多くをドライバーが管理していたのに対し、Direct3D 12ではコマンドリスト・リソースの状態・同期・メモリの常駐管理などを、ゲーム側がより明示的に管理する設計に変わっています。
この違いが表れるのが、CPU側の処理をどう並列化するかという部分です。Direct3D 11の基本的な描画コマンドは、Immediate Context(即時コンテキスト)という単一のストリームにまとめて送られます。複数スレッドを使うためのDeferred Context(遅延コンテキスト)という仕組みも用意されていますが、同じMicrosoft公式ドキュメントは「Direct3D 11 の遅延コンテキストはハードウェアに完全にマップされないため、比較的少ない作業を実行できます」と説明しており、Direct3D 11のマルチスレッド活用には限界があることを認めています。
これに対しDirect3D 12は、Command List(コマンドリスト)を中心とした仕組みに変更されており、複数のCommand Listをそれぞれ別のCPUスレッドで記録できます。大量のオブジェクトやDraw Callを処理するゲームでは、この違いがCPU側の負荷やFPSに直接影響しうるとされています。ただし、この仕組みを実際に活かせるかどうかはゲームエンジン側の実装次第であり、「DX12を選ぶだけで自動的にFPSが上がる」わけではない点は押さえておく必要があります。
FPSFPSで比較する場合はCPUボトルネックかGPUボトルネックかを見る
FPSを基準にDX11とDX12を比較する場合、まず確認すべきなのはGPU使用率です。Microsoft公式の「Direct3D 12 プログラミング ガイド」が示す通り、Direct3D 12の利点は複数のCommand ListをマルチコアCPUへ分散できる点にあります。この利点が効いてくるのは、GPU使用率が100%に張り付いていない場面、つまりCPU側の処理がボトルネックになっている状況です。1080pの低〜中設定で高FPSを狙うような場面や、大量のNPC・オブジェクトを処理するゲームでは、DX11でCPU側が詰まっていた処理がDX12で改善し、結果としてGPUをより働かせられるようになることがあります。
反対に、4K・高画質設定・重いレイトレーシング設定などですでにGPU使用率がほぼ100%に達しているゲームでは、DX11からDX12に変更してもGPU自体がボトルネックのままで、平均FPSがほとんど変わらないことがあります。DX11とDX12を比較する際は、平均FPSの数値だけでなく、GPU使用率がボトルネックになっているかどうかもあわせて確認してください。
もう一つ注意したいのが、平均FPSだけでは快適さを判断できない点です。DX11の平均FPSが100、DX12の平均FPSが110だったとしても、DX12側で瞬間的にフレームタイムが跳ねるなら、体感としてはDX11の方が滑らかに感じられることがあります。比較する際は、平均FPSに加えて1% Low(下位1%のフレームレート)やフレームタイムの推移も確認してください。特にオープンワールドで新しいエリアに入った直後や、新しいエフェクトが表示されるタイミングのフレームタイムには注目する価値があります。
カクつきDX12特有のカクつきはシェーダー・PSOコンパイルが原因になりやすい
DX12のゲームで「最初に訪れた場所だけ一瞬カクつく」「新しい敵や技が出た瞬間だけフレームが落ちる」という話を見かけることがあります。この原因の一つが、シェーダーとPSO(Pipeline State Object)のコンパイルです。Epic Games公式ドキュメント「Unreal Engine で PSO キャッシュを使用してレンダリングを最適化する」によると、Direct3D 12はPSOという単位でGPUの状態をまとめて管理しており、あらかじめ計算しておくことで描画時のオーバーヘッドを削減できます。しかし、必要になった瞬間にPSOをオンデマンドで生成すると、この処理自体が重くなります。同じ資料は、オンデマンドでの新しいPSOの生成には100ミリ秒以上かかる場合があると説明しています。60fpsの1フレームが約16.6ミリ秒であることを踏まえると、100ミリ秒という数字がどれほど大きなカクつきにつながりうるかが分かります。
重要なのは、DX12だから必ずこのカクつきが起きるわけではないという点です。PSOやシェーダーを、プレイ中ではなくゲーム開始前やロード中に準備しておけば、プレイ中のコンパイルを減らせます。Epic Gamesは「PSO Precaching for Unreal Engine」というドキュメントで、使用予定のPSOを事前に収集し、非同期でコンパイルしておくことでランタイム中のヒッチ(一瞬の引っかかり)を減らす仕組みを紹介しています。DX12でもこうしたキャッシュの仕組みが適切に働いていれば滑らかに動作しますし、逆にDX11でもCPU処理の詰まりやアセット読み込み、メモリ不足、ストレージアクセスなど別の原因でカクつきは発生します。「DX12でカクついた=DirectX 12そのものが悪い」とは判断できません。
シェーダー・PSOキャッシュが効いているゲームでは、同じ場面を2回目に通過したときの方がカクつきが小さくなることがあります。Epic Gamesの資料も、グラフィックスドライバー側に残ったキャッシュによってヒッチが隠れる可能性があると説明しています。また、Direct3D 12向けに収集したPSOキャッシュは別のグラフィックスAPI向けのキャッシュとは別物です。Epic Games公式ドキュメント「Manually Creating Bundled PSO Caches in Unreal Engine」は、RHI(レンダリングハードウェアインターフェース)ごとにPSOキャッシュが異なり、D3D12用に作成したキャッシュを別のAPI用として共有することはできないと説明しています。DX11からDX12に切り替えた直後だけ極端にカクつく場合、DirectX 12そのものの性能差ではなく、そのAPI向けのキャッシュがまだ作られていないことが原因である可能性があります。
DX11からDX12に切り替えた直後の数分間だけでDX11の方が快適だと判断するのは早計です。同じ場所・場面をもう一度通過してみて、カクつきが小さくなるかを確認してください。2回目以降で改善するなら、性能差ではなくキャッシュ生成の影響だった可能性が高くなります。
安定性DX12は本当にクラッシュしやすいのか
DX12そのものがDX11より必ずクラッシュしやすい、とは言い切れません。前述の通り、Direct3D 12ではCPU/GPUの同期・リソースの状態・メモリの常駐管理をゲーム側がより明示的に扱う設計になっています。Microsoft公式ドキュメント「Porting from Direct3D 11 to Direct3D 12」でも、Direct3D 11ではCPUとGPUの同期処理の大部分が自動化されていたのに対し、Direct3D 12ではアプリ側がCPUとGPUそれぞれのタイムラインを明示的に管理する必要があると説明されています。この管理をゲーム側のDX12レンダラーが適切に行えていない場合や、特定のGPUドライバーとの組み合わせで問題が起きる余地はありますが、GPUのオーバークロックや行き過ぎたアンダーボルト、VRAM不足、ドライバーの不具合、メモリエラーなどが、負荷の変化するDX12使用時にだけ表面化しているだけという可能性もあります。DX11に変えて症状が直ったからといって、DX12そのものが壊れていると即断せず、あくまで症状を切り分けるための材料として扱ってください。
DX12のゲームがクラッシュする際、DXGI_ERROR_DEVICE_REMOVEDやDXGI_ERROR_DEVICE_HUNGといったGPU関連のエラーが表示されることがあります。DX11にも対応しているゲームであれば、DX11に切り替えて同じ場面で再現するかを確認する価値はあります。ただし、この確認と並行して、GPUのオーバークロック・アンダーボルト設定、ドライバーのバージョン、GPU温度、VRAMの空き容量も見ておく必要があります。
VRAMの使用量についても、「DX11の方が少ない」「DX12の方が使う」と一律には言えません。前述のMicrosoft公式資料が示す通り、Direct3D 12ではメモリの常駐管理をゲーム側がより明示的に行う設計になっていますが、実際のVRAM使用量はゲームエンジンの実装・テクスチャ設定・解像度・レイトレーシングの有無など複数の要因に左右されるため、単純な容量基準でどちらが有利かを判断することはできません。DX12に変更したときだけVRAM使用量が大きく増え、フレームタイムの悪化やFPSの大きな低下が同時に起きるようなら、比較して判断する価値があります。
対応機能DX12でしか使えない機能とFeature Levelの注意点
FPSやカクつきの差が小さくても、DX12を選ぶ理由になり得るのが専用機能です。Microsoft DirectXブログ「Announcing DirectX 12 Ultimate」によると、DirectX 12 UltimateはDirectX Raytracing、Variable Rate Shading、Mesh Shaders、Sampler Feedbackといった新機能をまとめたものです。ゲームによっては、DX11に切り替えるとこれらの機能が使えなくなる場合があります。数FPSの違いよりも、使いたいグラフィックス機能を優先してDX12を選ぶという判断も成り立ちます。
ここで注意したいのが、「DirectX 12が起動する」ことと「DirectX 12 Ultimateの新機能がすべて使える」ことは同じではないという点です。Direct3DにはAPIのバージョンとは別に、Feature Level(機能レベル)という概念があります。Microsoft公式ドキュメント「Hardware Feature Levels」によると、Feature LevelはGPUが利用できる機能の集合を示すものであり、性能そのものを示す指標ではありません。DirectX 12 APIはFeature Level 11_0以上のハードウェアで利用できますが、それだけではレイトレーシングやMesh Shadersなど最新の機能まで対応しているとは限りません。「A D3D11-compatible GPU is required」のようなエラーメッセージが出るケースでもFeature Levelの概念が関わっており、詳しい確認方法は「A D3D11-compatible GPU is required」の原因の記事で、「DX12 is not supported」というエラーの切り分け方は「DX12 is not supported」の原因と直し方の記事で個別に扱っています。
古いGPUだから必ずDX11を選ぶべき、というわけでもありません。ゲームがそのGPUをDX12の対象として動作させているなら、DX12を実際に使用できます。一方で、古いGPUと古いドライバーの組み合わせでは、DX11側の最適化の方が長年かけて成熟しているケースもあります。DX12にしたときにFPSが下がる、1% Lowが悪化する、クラッシュが増えるといった変化があるなら、そのゲームに限ってDX11を使うという判断もできます。逆に、最新のGPUだからといって無理にDX12へ固定する必要もありません。最終的な性能は、GPU単体ではなくゲームエンジン・DX12レンダラーの実装・CPU性能・GPUドライバー・シェーダーキャッシュなど複数の要素で決まります。ゲーム側がDX11を標準にしている、あるいはDX12がベータ扱いのタイトルまで無理にDX12にする必要はなく、基本はゲーム開発元が推奨する設定を優先し、問題があれば比較するという順番で構いません。
実践実際に比較する方法と起動オプションの注意点
ここまでの内容を踏まえて、実際にDX11とDX12を比較する際の手順と、注意しておきたい点を整理します。
- 同じ場所・同じ設定・同じ解像度で比較する。DX11とDX12を切り替えて別の場所を見ても、正しい比較にはなりません。
- 平均FPSだけでなく1% Lowとフレームタイムを見る。数値上の平均が高くても、体感の滑らかさとは限りません。
- 切り替え直後の数分だけで判断しない。同じ場面を複数回通過し、シェーダー・PSOキャッシュが作られた後の状態でも比較してください。
- 起動オプションはゲームが公式に提供しているものだけを使う。Steam等では
-dx11、-dx12のようなコマンドで切り替えられるゲームがありますが、コマンドはゲームごとに異なります。ゲームが正式に提供していないオプションを推測して入力するのは避け、ゲーム内設定やランチャーから選べる場合はまずそちらを使ってください。 - PC全体を1つのAPIに統一する必要はない。ゲームAはDX11、ゲームBはDX12という使い分けをして問題ありません。
- CPUボトルネックが強く、DX12レンダラーが最適化されているゲーム
- DirectX 12 Ultimateの機能(レイトレーシング・Mesh Shaders等)を使いたい
- 事前キャッシュが機能しており、2回目以降のカクつきが小さい
- 開発元がDX12を標準・推奨設定にしている
- DX12だけで頻繁にカクつく・クラッシュする・起動できない
- GPU使用率が常に100%近く、DX12にしてもFPSがほぼ変わらない
- 発売直後・大型アップデート直後でDX12固有の不具合が報告されている
- 古いGPU・古いドライバーの組み合わせで、DX11側の最適化の方が安定している
Q&Aよくある質問
まとめ「どちらが上位のAPIか」ではなく「そのPCで速く安定する方」で選ぶ
最近のゲーミングPCだからという理由だけで、すべてのゲームをDX12に統一する必要はありません。まずはゲームの標準設定(多くはDX12が標準です)をそのまま使い、平均FPS・1% Low・フレームタイム・クラッシュの有無を確認してください。問題がなければ、そのまま使い続けて問題ありません。
DX12でカクつきやクラッシュが頻発するなら、DX11に切り替えて同じ条件で比較してください。DX11で改善するなら、そのゲームに限ってDX11を使い続ける選択肢があります。逆に、DX12の方が平均FPSだけでなく1% Lowも良く、使いたい最新グラフィックス機能も利用できるなら、DX12を選ぶメリットがあります。
最も避けたいのは、「DX12の方が番号が大きいから速いはず」「DX11は古いから使ってはいけない」とAPI名だけで判断することです。「どちらが上位のAPIか」ではなく、「そのゲームとそのPCの組み合わせで、どちらが速く安定して動いているか」で選ぶのが結論です。




