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 格式化轉換。
- 目前無法對應。
您無法使用 不可變 的資源作為目的地。 您可以使用 深度樣板 資源作為來源或目的地,前提是功能層級為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 |