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 进行格式转换
  • 当前可能未 映射
CopyResource 仅支持复制;它不支持任何拉伸、颜色键、混合或格式转换。 从 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

另请参阅

ID3D10Device

ID3D10Resource 接口