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 |
Library | D3D11.lib |