PFND3D10DDI_RESOURCECOPY回调函数 (d3d10umddi.h)
ResourceCopy 函数将整个源资源复制到目标资源。
语法
PFND3D10DDI_RESOURCECOPY Pfnd3d10ddiResourcecopy;
void Pfnd3d10ddiResourcecopy(
D3D10DDI_HDEVICE unnamedParam1,
D3D10DDI_HRESOURCE unnamedParam2,
D3D10DDI_HRESOURCE unnamedParam3
)
{...}
参数
unnamedParam1
hDevice [in]
显示设备的句柄 (图形上下文) 。
unnamedParam2
hDstResource [in]
要复制到的目标资源的句柄。
unnamedParam3
hSrcResource [in]
要从中复制的源资源的句柄。
返回值
无
备注
驱动程序可以使用 pfnSetErrorCb 回调函数来设置错误代码。
Microsoft Direct3D 运行时调用用户模式显示驱动程序的 ResourceCopy 函数,通知驱动程序从指定的源资源复制到指定的目标资源。 源资源和目标资源不能是同一资源。 源资源和目标资源必须是同一类型的资源,并且具有相同的维度。 两个资源) (DXGI_FORMAT 类型值的格式类型必须相互强制转换。 当前不得映射源和目标资源。 此外,资源创建标志会限制资源是否可以参与复制操作。
驱动程序不应遇到任何错误,D3DDDIERR_DEVICEREMOVED除外。 因此,如果驱动程序在调用 pfnSetErrorCb 函数时传递了除D3DDDIERR_DEVICEREMOVED以外的任何错误,则 Direct3D 运行时将确定错误严重。 即使删除了设备,驱动程序也不需要返回D3DDDIERR_DEVICEREMOVED;但是,如果设备删除干扰 了 ResourceCopy (通常不应) 执行的操作,驱动程序可以返回D3DDDIERR_DEVICEREMOVED。
对于在调用驱动程序的 CreateResource (D3D10) 函数时创建的源和目标资源的 D3D10DDIARG_CREATERESOURCEResourceDimension 成员,Direct3D 10.1 版本的 Resource3D 10.1 版本与 Direct3D 10.0 版本具有主要功能差异。 对于 Direct3D 10.0 版本的 ResourceCopy,源和目标资源的 D3D10DDIARG_CREATERESOURCE 的 ResourceDimension 成员必须匹配。 使用 ResourceCopy 的 Direct3D 10.1 版本可以稍微放宽源和目标资源的 D3D10DDIARG_CREATERESOURCE的 ResourceDimension 成员。 Direct3D 10.1 版本的 ResourceCopy 允许复制 TexCube 目标资源上的 Tex2D 源资源或 Tex2D 目标资源上的 TexCube 源资源。 此外,Direct3D 版本 10.1 中没有区分资源级别的 TexCube。 ResourceCopy 的 Direct3D 10.1 版本仅表示它是否可以复制 TexCube。 在 Direct3D 版本 10.0 中,复制资源、验证多个呈现目标等 (即,要求资源类型相同的各种操作) 都包含 TexCube 的区别以纳入资源类型。 在 Direct3D 版本 10.1 中,运行时只能确定 Tex2D。
以下部分列出了复制和转换的条件:
复制
对于复制, ResourceCopy 确保源和目标资源是通过驱动程序的 CreateResource (D3D10) 函数创建的,条件如下:
- 目标资源不是使用在 D3D10DDIARG_CREATERESOURCE 结构的 Usage 成员中设置 D3D10_DDI_USAGE_IMMUTABLE 值创建的。
- 源和目标资源是使用相同的资源类型和维度创建的, (缓冲区、一维 (一维) 纹理等) ,方法是在 D3D10DDIARG_CREATERESOURCE 的 ResourceDimension 成员中设置相同的值。
- 源资源和目标资源不是完全相同的资源的一部分。
- D3D10DDIARG_CREATERESOURCE 的 Format 成员中指定的每个源和目标资源格式都在同一个无类型组中。
- 源和目标资源必须具有相同数量的样本和质量级别:单采样资源除外,其样本数必须相同。
转换
对于转换, ResourceCopy 确保源和目标资源是通过驱动程序的 CreateResource (D3D10) 函数创建的,条件如下:
- 目标资源不是使用在 D3D10DDIARG_CREATERESOURCE 结构的 Usage 成员中设置 D3D10_DDI_USAGE_IMMUTABLE 值创建的。
- 源和目标资源是使用相同的资源类型创建 (缓冲区、一维 (一维) 纹理等) ,方法是在 D3D10DDIARG_CREATERESOURCE 的 ResourceDimension 成员中设置相同的值。
- 源和目标资源的维度与转换相匹配。
- 源资源和目标资源不是完全相同的资源的一部分。
- D3D10DDIARG_CREATERESOURCE 的 Format 成员中指定的每个源和目标资源格式都支持相应的转换操作。 对于 mipped 块压缩资源,维度都验证为 2 的幂。
- 源和目标资源必须具有相同数量的样本和质量级别:单采样资源除外,其样本数必须相同。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows Vista 和更高版本的 Windows 操作系统中可用。 |
目标平台 | 桌面 |
标头 | d3d10umddi.h (包括 D3d10umddi.h) |