【DirectX11】CPUとGPUとDirextX
目次
この記事で解説する内容
今回は、以下の3つの項目を解説していこうかと思います。
- CPUとGPUに役割の違いについて
- DirectXは結局何をしてくれるのか
- CPUとGPUが扱うデータのありか
CPUとGPUに役割の違いについて
CPUとGPUはそれぞれ得意なことが違います。簡単に説明をすると以下のようなことが得意です。
- CPU : 汎用的な計算
- GPU : 単純だが大量の計算
「CPU = 画面出力以外の計算すべて」「GPU = 画面出力時の処理」と覚えておけば大丈夫です。
DirectXは結局何をしてくれるのか
DirectXと聞くと、「ゲームや3DCGを使うときに使うWindowsで動くやつ」という認識だと思います。
これは、間違いではありません。しかしもう少し詳しく説明すると、「CPUからGPU(グラフィックス処理ユニット)にデータを送り、グラフィックスやオーディオのレンダリング、計算、表示などの処理を行うための機能を提供するやつ」という認識を持っていると、これからの話しの理解が早いかと思います。
「CPUからGPUにデータを送る」という部分が肝です。
GPUが本当に単純な作業に集中できるように、CPUは、色々な数値をGPUが計算しやすいようにしてからGPUに渡して上げる必要があります。
例えば、Vector3で座標を表すが私達は直感的に「デカルト座標系」に当てはめて考えられるのでわかりやすいですが、GPU側では、Vector3だけ渡されてもすぐに使えません。
GPUが本領を発揮できる行列形式にしてあげる必要があります。
CPU上の行列の形式と、GPU上の行列の形式はこれまた違うので、行列であっても変換が必要になります。
GPUの処理の仕方についてわかりやすい動画が以下のNVIDAの動画だと思います。
CPUとGPUが扱うデータのありか
最後にデータはどこにあってどこに送るのかについて解説します。
モデルを画面に表示するまでの流れを順を追って解説してみます。
- モデルデータを読み込み
- 読み込んだモデルデータを一旦、「RAM(CPU側のメモリ)」に保存
- CPUでデータを表示する前処理を行う(モデルデータの解析,GPUが理解しやすいように前処理)
- 準備ができたデータを「RAM(CPU側のメモリ)」から「VRAM(GPU側のメモリ)」に転送
- GPUで表示する前の処理(影をつけたり、透明部分を処理したり)
- ディスプレイに表示
細かい流れは省略していますが、大枠はこの流れでデータのやり取りがされます。
このことから、データは、「CPUで処理をしているときはRAM」に、「GPUで処理をしているときはVRAM」に有ることになります。
手順の「5」のGPU上で行われる、「データを読み出してたくさんの補正をかけていく処理」をレンダリングパイプラインと言います。
この処理は、DirectXではシェーダーという機能が使われ、HLSLというシェーダー専用の言語で実装することが可能です。
終わりに
この記事で解説した3つの内容は、本当に基本的なことなので、実際の開発などで使おうとするともう少し踏み込んで理解が必要になります。
しかし、ざっくりとでも理解しておくと、ゲームエンジンを使う場面などでも理解のスピードが違ってくると思います。
分かりにく部分や説明不足な部分があれば、私のツイッターかコメント欄にご連絡ください
【DirectX11】CPUとGPUとDirextX
https://daiki-iijima.github.io/2026/01/04/【DirectX11】CPUとGPUとDirextX/
