ID3D11DeviceContext1::UpdateSubresource1 方法 (d3d11_1.h)
CPU 将数据从内存复制到在不可映射内存中创建的子资源。
语法
void UpdateSubresource1(
[in] ID3D11Resource *pDstResource,
[in] UINT DstSubresource,
[in, optional] const D3D11_BOX *pDstBox,
[in] const void *pSrcData,
[in] UINT SrcRowPitch,
[in] UINT SrcDepthPitch,
[in] UINT CopyFlags
);
参数
[in] pDstResource
类型: ID3D11Resource*
指向目标资源的指针。
[in] DstSubresource
类型: UINT
标识目标子资源的从零开始的索引。 有关更多详细信息,请参阅 D3D11CalcSubresource 。
[in, optional] pDstBox
类型: const D3D11_BOX*
指向框的指针,该框定义要将资源数据复制到的目标子资源部分。 缓冲区的坐标以字节为单位,纹理的纹素为字节。 如果 为 NULL, 则 UpdateSubresource1 将数据写入目标子资源,且不带偏移量。 源的尺寸必须与目标相符。
空框会导致无操作。 如果顶值大于或等于底部值,或者左值大于或等于右值,或者前值大于或等于后的值,则框为空。 当框为空时, UpdateSubresource1 不执行更新操作。
[in] pSrcData
类型: const void*
指向内存中源数据的指针。
[in] SrcRowPitch
类型: UINT
源数据的一行的大小。
[in] SrcDepthPitch
类型: UINT
源数据的一个深度切片的大小。
[in] CopyFlags
类型: UINT
一个D3D11_COPY_FLAGS类型的值,该值指定如何执行更新操作。 如果为“无更新”选项指定零, 则 UpdateSubresource1 的行为类似于 ID3D11DeviceContext::UpdateSubresource。 对于无法处理这些标志的现有显示驱动程序,运行时不使用它们。
返回值
无
备注
如果调用 UpdateSubresource1 来更新常量缓冲区,传递任何区域,并且驱动程序尚未实现到Windows 8,则运行时将删除调用 (功能级别 9.1、9.2 和 9.3,其中运行时仿真支持) 。 如果使用部分区域更新常量缓冲区(其范围不与 16 字节粒度对齐 (16 字节是完整常量) ),则运行时也会放弃调用。 当运行时放弃调用时,运行时不会 (DDI) 调用相应的设备驱动程序接口。
在软件命令列表中录制对 UpdateSubresource 的调用 时,播放 命令列表时, pDstBox 中的偏移量会错误地应用于 pSrcData 。 new-for-Windows 8 UpdateSubresource1 修复了此问题。 在调用 UpdateSubresource1 时, pDstBox 不会影响 pSrcData。
有关各种资源类型以及 UpdateSubresource1 如何使用每种资源类型的信息,请参阅 Direct3D 11 中的资源简介。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |UWP 应用] |
最低受支持的服务器 | 适用于 Windows Server 2008 R2 的Windows Server 2012和平台更新 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | d3d11_1.h |
Library | D3D11.lib |