次の方法で共有


バッファー内のサブ割り当て

バッファーには、アプリケーションが CPU から GPU に大量の一時的なデータを転送するために D3D12 で必要なすべての機能があります。 このセクションでは、リソースとバッファーの使用と管理に関する 4 つの一般的なシナリオについて説明します。

D3D11 と同様に、D3D12 のアプリケーションでは、D3D11 の動的/ステージング リソースと比較して D3D12 でバッファーを割り当てるときにメモリの使用量を宣言する必要がありますが、D3D12 では、開発者はメモリ使用量をより柔軟かつ厳密に制御できます。 バッファーは、サブ割り当てによって、低レベルのメモリ管理に必要なすべての機能を備えています。

このセクションでは、次の操作を行います。

話題 形容
さまざまな種類のリソース をアップロードする
1 つのバッファーを使用して定数バッファー データと頂点バッファー データの両方を GPU にアップロードする方法と、バッファー内でデータを適切にサブ割り当てして配置する方法を示します。 1 つのバッファーを 1 つ使用すると、メモリ使用量の柔軟性が向上し、アプリケーションでメモリ使用量をより厳密に制御できます。 また、さまざまな種類のリソースをアップロードするための D3D11 モデルと D3D12 モデルの違いを示します。
バッファー を使用したテクスチャ データのアップロードの
2D または 3D テクスチャ データのアップロードは、1D データのアップロードと似ていますが、アプリケーションでは行ピッチに関連するデータの配置に細心の注意を払う必要があります。 バッファーは、グラフィックス パイプラインの複数の部分から直交して同時に使用でき、非常に柔軟です。
バッファー を使用してデータを読み取ります
スクリーン ショットのキャプチャなど、GPU からデータを読み取り戻すには、Readback ヒープを使用する必要があります。
Fence-Based リソース管理の
フェンスを使用して GPU の進行状況を追跡することで、リソース データの有効期間を管理する方法を示します。 メモリは、アップロード ヒープのリング バッファー実装など、メモリ内の空き領域の可用性を慎重に管理するフェンスで効果的に再利用できます。

メモリ管理