共用方式為


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 Map 會傳回 DXGI_ERROR_DEVICE_REMOVED,如果 mapType 允許任何 CPU 讀取存取,而且已移除視訊卡。
 

如需上述傳回值的詳細資訊,請參閱 DXGI_ERROR

Map 具有下列限制:

  • 單一子資源無法對應多次;換句話說,請勿在已經對應的子資源上呼叫 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 中的資源 鎖定

要求

要求 價值
目標平臺 窗戶
標頭 d3d10.h
連結庫 D3D10.lib

另請參閱

ID3D10Texture1D 介面