ID3D10Buffer::Map メソッド (d3d10.h)
リソースに含まれるデータへのポインターを取得し、リソースへの GPU アクセスを拒否します。
構文
HRESULT Map(
[in] D3D10_MAP MapType,
[in] UINT MapFlags,
[out] void **ppData
);
パラメーター
[in] MapType
種類: D3D10_MAP
リソースの読み取りと書き込みに対する CPU のアクセス許可を指定するフラグ。 使用可能な値については、「 D3D10_MAP」を参照してください。
[in] MapFlags
型: UINT
GPU がビジー状態のときに CPU が実行する必要がある処理を指定するフラグ ( 「D3D10_MAP_FLAG」を参照)。 このフラグは省略可能です。
[out] ppData
型: void**
バッファー リソース データへのポインター。
戻り値
型: HRESULT
この関数が成功すると、S_OKが返されます。 次の一覧には、 Map が失敗する原因の一部が含まれています。
- MapFlags で D3D10_MAP_FLAG_DO_NOT_WAITが指定されていて、GPU がまだリソースで終了していない場合、ID3D10Buffer::Map はDXGI_ERROR_WAS_STILL_DRAWINGを返します。
- 読み取りを許可するフラグが MapType に含まれており、ハードウェア デバイス (つまり、ビデオ カード) が削除された場合、ID3D10Buffer::Map はDXGI_ERROR_DEVICE_REMOVEDを返します。
解説
CPU がリソースの内容を書き込むには、動的使用フラグ (D3D10_USAGE_DYNAMIC) を使用してリソースを作成する必要があります。 これらのコンテンツの読み取りと書き込みの両方を行うには、D3D10_USAGE_STAGINGステージング使用フラグを使用してリソースを作成する必要があります。 (これらのフラグの詳細については、「 D3D10_USAGE」を参照してください)。 ID3D10Buffer::Map は、リソース データへのポインターを取得します。 リソースに効率的にアクセスする方法については、「リソース データのコピーとアクセス (Direct3D 10)」を参照してください。
ID3D10Buffer::Unmap を呼び出して、アプリケーションがリソースへのアクセスを完了したことを示します。
ID3D10Buffer::Map には他にもいくつかの制限があります。 次に例を示します。
- 同じバッファーを複数回マップすることはできません。つまり、既にマップされているバッファーで ID3D10Buffer::Map を呼び出さないでください。
- パイプラインにバインドされているバッファーは、レンダリング操作 ( ID3D10Device::D raw) を実行する前にマップ解除する必要があります。
Direct3D 9 と Direct3D 10 の違い: Direct3D 10 の ID3D10Buffer::Map は、Direct3D 9 のリソース ロック に似ています。 |
必要条件
対象プラットフォーム | Windows |
ヘッダー | d3d10.h |
Library | D3D10.lib |