msdnのドキュメントでは、directx 11 では、directx 11 テクスチャをプログラムで塗りつぶす方法が複数あると説明されています。
(1) デフォルトの使用テクスチャでテクスチャを作成し、メモリからのデータで初期化します
(2)動的な使用法でテクスチャを作成し、DeviceContext Mapを使用してテクスチャメモリへのポインタを取得し、それに書き込み、Unmapを使用して完了を示します(その時点でGPUにコピーされたと思います)
(3) ステージングを使用してテクスチャを作成し、動的テクスチャの場合と同じ手順に従いますが、ID3D11DeviceContext.CopyResource を呼び出して、このステージング テクスチャを使用して (不変でない) デフォルトまたは動的テクスチャを塗りつぶします。
ただし、ドキュメントには各方法の長所と短所がまったく説明されておらず、私はまだ directx に慣れていないため、まったく明確ではありません。
directx 11 でプログラムによってテクスチャを作成するこれらの方法のそれぞれの長所と短所は何ですか?
補足:ステージング テクスチャのコンテキストでは、GPU からの読み取りはバッファリングされないため、独自のダブル バッファリングを行う必要があることを読みました。しかし、これが正確かどうか、ステージング テクスチャを使用した書き込みに適用されるかどうか (または、それが実際に何を意味するか) はわかりません。
2 つ目の注意事項: Map メソッドのドキュメントには、サブリソース内のデータへのポインターを取得し、そのサブリソースへの GPU アクセスを拒否すると記載されています。基になるデータが Map によって呼び出されたテクスチャに GPU がアクセスしたい場合、GPU は何をしますか? ストール?(これは私が尋ねた長所と短所の一部のように聞こえるので、私は尋ねます)