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
  • 系結至管線的任何子資源必須先取消對應,才能執行任何轉譯作業 (,在 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
程式庫 D3D10.lib

另請參閱

ID3D10Texture1D 介面