D3D10_MAP列挙 (d3d10.h)

CPU による読み取りと書き込みのためにアクセスするリソースを識別します。 アプリケーションは、これらのフラグの 1 つ以上を組み合わせることができます。

構文

typedef enum D3D10_MAP {
  D3D10_MAP_READ = 1,
  D3D10_MAP_WRITE = 2,
  D3D10_MAP_READ_WRITE = 3,
  D3D10_MAP_WRITE_DISCARD = 4,
  D3D10_MAP_WRITE_NO_OVERWRITE = 5
} ;

定数

 
D3D10_MAP_READ
値: 1
リソースは読み取り用にマップされます。 リソースは、読み取りアクセス権を使用して作成されている必要があります ( D3D10_CPU_ACCESS_READを参照してください)。
D3D10_MAP_WRITE
値: 2
リソースは書き込み用にマップされます。 リソースは、書き込みアクセス権を使用して作成されている必要があります ( D3D10_CPU_ACCESS_WRITEを参照してください)。
D3D10_MAP_READ_WRITE
値: 3
リソースは読み取りと書き込みにマップされます。 リソースは、読み取りおよび書き込みアクセス権で作成されている必要があります ( 「D3D10_CPU_ACCESS_READとD3D10_CPU_ACCESS_WRITE」を参照してください)。
D3D10_MAP_WRITE_DISCARD
値: 4
リソースは書き込み用にマップされます。リソースの以前の内容は未定義になります。 リソースは、書き込みアクセス権を使用して作成されている必要があります ( D3D10_CPU_ACCESS_WRITEを参照してください)。
D3D10_MAP_WRITE_NO_OVERWRITE
値: 5
リソースは書き込み用にマップされます。リソースの既存の内容を上書きすることはできません (「解説」を参照)。 このフラグは、頂点バッファーとインデックス バッファーでのみ有効です。 リソースは、書き込みアクセス権を使用して作成されている必要があります ( D3D10_CPU_ACCESS_WRITEを参照してください)。 D3D10_BIND_CONSTANT_BUFFER フラグを使用して作成されたリソースでは使用できません。

注釈

この列挙体は 、ID3D10Buffer::MapID3D10Texture1D::MapID3D10Texture2D::Mapおよび ID3D10Texture3D::Map で使用されます。

D3D10_MAP_WRITE_NO_OVERWRITEの意味

D3D10_MAP_WRITE_NO_OVERWRITEは、 入力アセンブラー (IA) ステージで使用されているデータに書き込まないことをアプリケーションが約束していることを示します。 GPU と引き換えに、アプリケーションは同じバッファーの他の部分に書き込むことができます。 アプリケーションは、IA ステージで使用されているデータに対して書き込みが行われるようにする必要があります。

たとえば、次の図に示すバッファーを考えてみましょう。 頂点 4 から 6 を使用する Draw 呼び出しが発行されている場合、このバッファーで Map を呼び出すアプリケーションは、描画呼び出しがレンダリング中にアクセスする頂点に書き込まれないことを確認する必要があります。

さまざまな使用率の段階での頂点データの図 ただし、GPU が現在処理しているフレームの観点から CPU の背後にあるフレームが多いことが多いため、これを確実に行うのは困難な場合があります。 2 から 5 フレーム前に呼び出しが行われたため、リソースのどのセクションが使用されているかを追跡することは困難であり、エラーが発生しやすいです。 このため、アプリケーションは、D3D10_MAP_WRITE_NO_OVERWRITEを使用する場合にのみ、リソースの初期化されていない部分に書き込みを行うことをお勧めします。

D3D10_MAP_WRITE_NO_OVERWRITEでのD3D10_MAP_WRITE_DISCARDの一般的な使用方法

D3D10_MAP_WRITE_DISCARDとD3D10_MAP_WRITE_NO_OVERWRITEは通常、動的なインデックス/頂点バッファーと組み合わせて使用されますが、動的テクスチャでも使用できます。

これら 2 つのフラグの一般的な用途には、カメラの現在の位置から見ることができるジオメトリを使用して動的インデックス/頂点バッファーを埋める必要があります。 特定のフレームのバッファーに初めてデータを入力すると、Map は D3D10_MAP_WRITE_DISCARDで呼び出されます。これにより、バッファーの以前の内容が無効になります。 バッファーには、使用可能なすべてのデータが格納されます。

同じフレーム内のバッファーへの後続の書き込みでは、D3D10_MAP_WRITE_NO_OVERWRITEを使用する必要があります。 これにより、前述の制限が遵守されている限り、CPU は GPU によって使用される可能性のあるリソースにアクセスできます。

要件

要件
Header d3d10.h

こちらもご覧ください

リソース列挙