ID3D10Buffer::Map
リソースに格納されているデータへのポインターを取得して、そのリソースへの GPU のアクセスを拒否します。
HRESULT
Map(
D3D10_MAP MapType,
UINT MapFlags,
void **ppData
);
パラメータ
- MapType
リソースの読み取りおよび書き込みに対する CPU のアクセス許可を指定するフラグです。指定可能な値については、「D3D10_MAP」を参照してください。 - MapFlags
GPU がビジーなときの CPU の動作を指定するフラグです (「D3D10_MAP_FLAG」を参照してください)。このフラグはオプションです。 - ppData
バッファー リソース データへのポインターです。
戻り値
この関数が正常完了した場合は、S_OK が返されます。 Map が失敗する場合は、次の理由が考えられます。
- MapType で D3D10_MAP_FLAG_DO_NOT_WAIT が指定されており、GPU がリソースの処理をまだ終えていない場合、Map は E_WASSTILLRENDERING を返します。
- MapType に読み取りを許可するフラグが含まれており、ハードウェア デバイス (つまりビデオカード) が削除されている場合、Map は E_DEVICEREMOVED を返します。
解説
CPU がリソースの内容を書き込むには、動的使用フラグ D3D10_USAGE_DYNAMIC を使ってリソースを作成する必要があります。 リソースの内容の読み取りと書き込みの両方を実行するには、ステージング使用フラグ D3D10_USAGE_STAGING を使ってリソースを作成する必要があります (これらのフラグの詳細については、「D3D10_USAGE」を参照してください)。 ID3D10Buffer::Map は、リソース データへのポインターを取得します。 リソースへの効率的なアクセス方法については、「リソース データのコピーとアクセス (Direct3D 10)」を参照してください。
アプリケーションがリソースへのアクセスを終了したことを通知するには、ID3D10Buffer::Unmap を呼び出します。
Map には、ほかにもいくつかの制約があります。 次に例を示します。
- 1 つのバッファーを複数回マップすることはできません。つまり、既にマップされているバッファーに対して Map を呼び出すことはできません。
- レンダリング操作 (つまり ID3D10Device::Draw) を実行可能にするには、パイプラインにバインドされているバッファーをすべて事前にアンマップしておく必要があります。
Direct3D 9 と Direct3D 10 の違い Direct3D 10 の Map は、Direct3D 9 のリソースの Lock と似ています。 |
要件
ヘッダー: D3D10.h 宣言