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 忙碌 (D3D10_MAP_FLAG ) 時應該執行的 CPU。 此旗標是選擇性的。

[out] ppData

類型: void**

緩衝區資源資料的指標。

傳回值

類型: HRESULT

如果此函式成功,則會傳回S_OK。 下列清單包含 Map 可能會失敗的一些原因:

  • 如果 MapFlags 指定D3D10_MAP_FLAG_DO_NOT_WAIT,且 GPU 尚未使用資源完成, 則 ID3D10Buffer::Map 會傳回DXGI_ERROR_WAS_STILL_DRAWING。
  • ID3D10Buffer::Map 傳回DXGI_ERROR_DEVICE_REMOVED如果 MapType 包含允許讀取的任何旗標,且硬體裝置 (即已移除視訊卡) 。
如需上述傳回值的詳細資訊,請參閱 DXGI_ERROR

備註

若要讓 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
程式庫 D3D10.lib

另請參閱

ID3D10Buffer 介面