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 中的资源简介

注意仅适用于功能级别9_x硬件 如果使用 UpdateSubresource1ID3D11DeviceContext1::CopySubresourceRegion1 从暂存资源复制到默认资源,则可能会损坏目标内容。 如果传递 NULL 源框,并且源资源的维度与目标资源的维度不同,或者使用目标偏移量, (x、y 和 z) ,则会出现这种情况。 在这种情况下,始终传递源资源的完整大小的源框。
 

要求

要求
最低受支持的客户端 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |UWP 应用]
最低受支持的服务器 适用于 Windows Server 2008 R2 的Windows Server 2012和平台更新 [桌面应用 |UWP 应用]
目标平台 Windows
标头 d3d11_1.h
Library D3D11.lib

另请参阅

ID3D11DeviceContext1