次の方法で共有


ID3D10Texture1D::Map メソッド (d3d10.h)

サブリソースに含まれるデータへのポインターを取得し、そのサブリソースへの GPU アクセスを拒否します。

構文

HRESULT Map(
  [in]  UINT      Subresource,
  [in]  D3D10_MAP MapType,
  [in]  UINT      MapFlags,
  [out] void      **ppData
);

パラメーター

[in] Subresource

型: UINT

サブリソースのインデックス番号。 詳細については、「 D3D10CalcSubresource 」を参照してください。

[in] MapType

種類: D3D10_MAP

リソースに対する CPU の読み取りおよび書き込みアクセス許可を指定します。 使用可能な値については、「 D3D10_MAP」を参照してください。

[in] MapFlags

型: UINT

GPU がビジー状態のときに CPU が実行する必要がある処理を指定するフラグ。 このフラグは省略可能です。

[out] ppData

型: void**

テクスチャ リソース データへのポインター。

戻り値

型: HRESULT

この関数が成功すると、S_OKが返されます。 その他の制限事項、および Map メソッドで 返すことができるエラー値の一覧については、「解説」を参照してください。

解説

テクスチャをマッピングすると、CPU はテクスチャのサブリソース内の基になるデータに直接アクセスできます。 メソッドを成功させるには、マップされるテクスチャを適切なフラグ ( D3D10_CPU_ACCESS_FLAGを参照) で作成し、指定した使用法 ( D3D10_USAGEを参照) をD3D10_USAGE_DYNAMICまたはD3D10_USAGE_STAGINGする必要があります。

Map メソッドの一般的なエラーは、次の戻り値によって示されます。

アイテム 説明
DXGI_ERROR_WAS_STILL_DRAWING MapFlags で D3D10_MAP_FLAG_DO_NOT_WAITが指定されていて、GPU がまだリソースで終了していない場合、Map はDXGI_ERROR_WAS_STILL_DRAWINGを返します。
DXGI_ERROR_DEVICE_REMOVED MapType が CPU 読み取りアクセスを許可し、ビデオ カードが削除された場合、Map はDXGI_ERROR_DEVICE_REMOVEDを返します。
 

上記の戻り値の詳細については、「 DXGI_ERROR」を参照してください。

マップ には次の制限があります。

  • 1 つのサブリソースを複数回マップすることはできません。つまり、既にマップされているサブリソースで Map を呼び出さないでください。
  • パイプラインにバインドされているサブリソースは、レンダリング操作 ( つまり、ID3D10Device::D raw の前) を実行する前にマップ解除する必要があります。
基になるサブリソース データに有意義にアクセスするには、アプリケーションで void pData ポインターを適切な型にキャストする必要があります。 たとえば、次のコードは、1D サブリソースの各テクセルを読み取る方法を示しています。 テクスチャは DXGI_FORMAT_R32G32B32A32_FLOAT を使用して作成され、pData がこのメソッドの正常な呼び出しから出力されるテクスチャ リソース データへのポインターであると想定されます。

FLOAT* pTexels = (FLOAT*)pData;
for( UINT col = 0; col < width; col++ )
{
  pTexels[col*4 + 0]; // Alpha
  pTexels[col*4 + 1]; // Blue
  pTexels[col*4 + 2]; // Green
  pTexels[col*4 + 3]; // Red
}

Direct3D 9 と Direct3D 10 の違い:

Direct3D 10 のマップは、Direct3D 9 のリソース ロックに似ています。

必要条件

   
対象プラットフォーム Windows
ヘッダー d3d10.h
Library D3D10.lib

関連項目

ID3D10Texture1D インターフェイス