ID3D10Device::CopyResource 方法 (d3d10.h)
使用 GPU 将源资源的整个内容复制到目标资源。
语法
void CopyResource(
[in] ID3D10Resource *pDstResource,
[in] ID3D10Resource *pSrcResource
);
参数
[in] pDstResource
类型: ID3D10Resource*
指向目标资源的指针 (请参阅 ID3D10Resource) 。
[in] pSrcResource
类型: ID3D10Resource*
指向源资源的指针 (请参阅 ID3D10Resource) 。
返回值
无
备注
此方法不同寻常,因为它会导致 GPU 执行复制操作 (类似于 CPU) 的 memcpy。 因此,它具有一些旨在提高性能的限制。 例如,源和目标资源:
- 必须是不同的资源。
- 必须是同一 类型。
- 必须具有相同的尺寸, (包括宽度、高度、深度和大小,) 适当。
- 必须具有兼容的 格式,这意味着格式必须相同或至少来自同一类型组。 例如,可以将DXGI_FORMAT_R32G32B32_FLOAT纹理复制到DXGI_FORMAT_R32G32B32_UINT纹理,因为这两种格式都位于DXGI_FORMAT_R32G32B32_TYPELESS组中。 从 Direct3D 10.1 开始, CopyResource 可以在几种格式类型之间复制。 有关详细信息,请参阅 使用 Direct3D 10.1 进行格式转换。
- 当前可能未 映射。
不可变的 深度模具 资源不能用作目标。 使用 多重采样功能 创建的资源不能用作源或目标。
方法是可以添加到命令缓冲区队列的异步调用。 这会尝试删除复制数据时可能发生的管道停止。 有关更多详细信息,请参阅 性能注意事项 。
只需复制资源中部分数据的应用程序应改用 ID3D10Device::CopySubresourceRegion 。
Direct3D 10 和 Direct3D 10.1 之间的差异: Direct3D 10.1 使深度模具资源可用作源或目标。 仅当源和目标具有相同的多重采样计数和质量时,Direct3D 10.1 才允许将多重采样资源用作源和目标。 如果源和目标在多重采样计数和质量方面不同,或者其中一个是多重采样,而另一个不是多重采样,则对 ID3D10Device::CopyResource 的调用将失败。 可以在预结构化+类型化资源和块压缩纹理之间复制。 请参阅 使用 Direct3D 10.1 进行格式转换。 |
要求
目标平台 | Windows |
标头 | d3d10.h |
Library | D3D10.lib |