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。 因此,如果驱动程序通过除D3DDDIERR_DEVICEREMOVED以外的任何错误,在调用 pfnSetErrorCb 函数时,Direct3D 运行时将确定错误至关重要。 即使设备已删除,驱动程序也不需要返回D3DDDIERR_DEVICEREMOVED;但是,如果设备删除干扰了 ResourceCopy(通常不应发生),驱动程序可以返回D3DDDIERR_DEVICEREMOVED。
ResourceCopy 的 Direct3D 10.1 版本与 Direct3D 10.0 版本的主要功能区别在于,ResourceDimension 成员 D3D10DDIARG_CREATERESOURCE 在调用驱动程序的 CreateResource(D3D10) 函数中创建的源和目标资源。 对于 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 中消失。 ResourceCopy 的 Direct3D 10.1 版本 仅表示是否可以复制 TexCube。 在 Direct3D 版本 10.0 中,复制资源、验证多个呈现目标等(即需要资源类型相同的各种作)都包括 TexCube 将考虑到资源类型中的区别。 在 Direct3D 版本 10.1 中,运行时只能确定 Tex2D。
以下部分列出了复制和转换的条件:
复制
若要复制,ResourceCopy 可确保通过驱动程序的 createResource(D3D10)CreateResource(D3D10) 函数创建源和目标资源,条件如下:
- 目标资源未使用 D3D10DDIARG_CREATERESOURCE 结构的 Usage 成员中设置的 D3D10_DDI_USAGE_IMMUTABLE 值创建。
- 源和目标资源是通过在D3D10DDIARG_CREATERESOURCE的 ResourceDimension 成员中设置相同的值,使用相同的资源类型和维度(缓冲区、一维(1-D)纹理等来创建的。
- 源和目标资源不是完全相同的资源的一部分。
- Format D3D10DDIARG_CREATERESOURCE 成员中指定的每个源和目标资源格式都位于同一个无类型组中。
- 源资源和目标资源必须具有相同数量的样本和质量级别:除了单采样资源,这些资源必须只有相同数量的样本。
转换
对于转换,ResourceCopy 可确保通过驱动程序的 createResource(D3D10)createResource(D3D10) 函数创建源和目标资源,条件如下:
- 目标资源未使用 D3D10DDIARG_CREATERESOURCE 结构的 Usage 成员中设置的 D3D10_DDI_USAGE_IMMUTABLE 值创建。
- 源和目标资源是使用相同的资源类型(缓冲区、一维(1-D)纹理等方式创建的,方法是在D3D10DDIARG_CREATERESOURCE的 ResourceDimension 成员中设置相同的值。
- 源和目标资源的维度与转换匹配。
- 源和目标资源不是完全相同的资源的一部分。
- D3D10DDIARG_CREATERESOURCE的 Format 成员中指定的每个源和目标资源格式都支持适当的转换作。 对于 mipped 块压缩的资源,维度都验证为 2 的幂。
- 源资源和目标资源必须具有相同数量的样本和质量级别:除了单采样资源,这些资源必须只有相同数量的样本。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 在 Windows Vista 和更高版本的 Windows作系统中可用。 |
目标平台 | 桌面 |
标头 | d3d10umddi.h (包括 D3d10umddi.h) |