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 宣言

関連項目

ID3D10Buffer インターフェイス