ID3D11DeviceContext::Map メソッド (d3d11.h)
サブリソースに含まれるデータへのポインターを取得し、そのサブリソースへの GPU アクセスを拒否します。
構文
HRESULT Map(
[in] ID3D11Resource *pResource,
[in] UINT Subresource,
[in] D3D11_MAP MapType,
[in] UINT MapFlags,
[out, optional] D3D11_MAPPED_SUBRESOURCE *pMappedResource
);
パラメーター
[in] pResource
種類: ID3D11Resource*
ID3D11Resource インターフェイスへのポインター。
[in] Subresource
型: UINT
サブリソースのインデックス番号。
[in] MapType
種類: D3D11_MAP
リソースに対する CPU の読み取りおよび書き込みアクセス許可を指定する、 D3D11_MAP型指定された値。
[in] MapFlags
型: UINT
GPU がビジー状態のときに CPU が実行する処理を指定するフラグ。 このフラグは省略可能です。
[out, optional] pMappedResource
マップされたサブリソースの D3D11_MAPPED_SUBRESOURCE 構造体へのポインター。 NULL ポインターについては、「解説」セクションを参照してください。
戻り値
型: HRESULT
このメソッドは、 Direct3D 11 リターン コードのいずれかを返します。
また、MapFlags で D3D11_MAP_FLAG_DO_NOT_WAITが指定されていて、GPU がまだリソースで完了していない場合、このメソッドは DXGI_ERROR_WAS_STILL_DRAWING を返します。
MapType が CPU 読み取りアクセスを許可し、ビデオ カードが削除された場合、このメソッドはDXGI_ERROR_DEVICE_REMOVEDも返します。
これらのエラー コードの詳細については、「 DXGI_ERROR」を参照してください。
注釈
遅延コンテキストで Map を 呼び出す場合は、 D3D11_MAP_WRITE_DISCARD、 D3D11_MAP_WRITE_NO_OVERWRITE、またはその両方のみを MapType パラメーターに渡すことができます。 その他 のD3D11_MAP型指定された値は、遅延コンテキストではサポートされていません。
pMappedResource の NULL ポインター
pMappedResource パラメーターは、D3D11_USAGE_DEFAULTを使用して作成されたテクスチャが指定され、API が即時コンテキストで呼び出されると NULL になることがあります。 これにより、D3D11_TEXTURE_LAYOUT_UNDEFINED を使用して作成された場合でも、既定のテクスチャをマップできます。 この API 呼び出しの後、 ID3D11DeviceContext3::WriteToSubresource または ID3D11DeviceContext3::ReadFromSubresource を使用してテクスチャにアクセスできます。書き込み用にマップされたサブリソースから読み取らない
MapType パラメーターにD3D11_MAP_WRITE、D3D11_MAP_WRITE_DISCARD、またはD3D11_MAP_WRITE_NO_OVERWRITEを渡す場合は、pData メンバーがポイントするサブリソース データをアプリが読み取らないようにする必要があります。これにより、パフォーマンスが大幅に低下する可能性があるためD3D11_MAPPED_SUBRESOURCEポイントします。 pData ポイントがPAGE_WRITECOMBINEを使用して割り当てることができるメモリ領域。アプリでは、このようなメモリに関連付けられているすべての制限を適用する必要があります。次の C++ コードでも、メモリから読み取り、パフォーマンスの低下をトリガーできます。これは、コードが次の x86 アセンブリ コードに拡張できるためです。
C++ コード:
*((int*)MappedResource.pData) = 0;
x86 アセンブリ コード:
AND DWORD PTR [EAX],0
このパフォーマンスの低下を回避するには、適切な最適化設定と言語コンストラクトを使用します。 たとえば、 揮発性 ポインターを使用するか、コード サイズではなくコード速度を最適化することで、xor の最適化を回避できます。
Windows Phone 8: この API はサポートされています。
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | d3d11.h |
Library | D3D11.lib |