ID3D11DeviceContext::CopyResource 方法 (d3d11.h)

使用 GPU 將來源資源的整個內容複製到目的地資源。

語法

void CopyResource(
  [in] ID3D11Resource *pDstResource,
  [in] ID3D11Resource *pSrcResource
);

參數

[in] pDstResource

類型: ID3D11Resource*

代表目的地資源的 ID3D11Resource 介面指標。

[in] pSrcResource

類型: ID3D11Resource*

代表來源資源的 ID3D11Resource 介面指標。

傳回值

備註

此方法不尋常,因為它會導致 GPU 執行複製作業, (類似 CPU) 的 memcpy。 因此,它有一些專為改善效能而設計的限制。 例如,來源和目的地資源:

  • 必須是不同的資源。
  • 必須是相同的類型。
  • 必須有相同的維度 (,包括寬度、高度、深度和大小,視需要適當) 。
  • 必須具有相容的 DXGI 格式,這表示格式必須相同或至少來自相同的類型群組。 例如,DXGI_FORMAT_R32G32B32_FLOAT紋理可以複製到DXGI_FORMAT_R32G32B32_UINT紋理,因為這些格式都位於DXGI_FORMAT_R32G32B32_TYPELESS群組中。 CopyResource 可以在幾個格式類型之間複製。 如需詳細資訊,請參閱 使用 Direct3D 10.1 格式化轉換
  • 目前無法對應。
CopyResource 僅支持複製;它不支援任何延展、色彩索引鍵或混合。 CopyResource 可以在幾個格式類型之間重新解譯資源數據。 如需詳細資訊,請參閱 使用 Direct3D 10.1 格式化轉換

您無法使用 不可變 的資源作為目的地。 您可以使用 深度樣板 資源作為來源或目的地,前提是功能層級為D3D_FEATURE_LEVEL_10_1或更新版本。 對於功能層級9_x,使用 D3D11_BIND_DEPTH_STENCIL 旗標建立的資源只能當做 CopyResource 的來源使用。 使用多重取樣功能建立的資源 (請參閱 DXGI_SAMPLE_DESC) 只有在來源和目的地都有相同的多重取樣計數和品質時,才能使用) 作為來源和目的地。 如果來源和目的地在多重取樣計數和品質中不同,或其中一個是多重取樣,而另一個不是多重取樣, 則呼叫ID3D11DeviceContext::CopyResource 會失敗。 使用 ID3D11DeviceContext::ResolveSubresource 將多重取樣的資源解析為非多重取樣的資源。

方法是異步呼叫,可能會新增至命令緩衝區佇列。 這會嘗試移除複製數據時可能發生的管線停止。 如需詳細資訊,請參閱 效能考慮

如果您只需要複製資源中的部分數據,建議您改用 ID3D11DeviceContext::CopySubresourceRegion

規格需求

需求
目標平台 Windows
標頭 d3d11.h
程式庫 D3D11.lib

另請參閱

ID3D11DeviceContext

ID3D11Resource