ID3D11Device3::WriteToSubresource 方法 (d3d11_3.h)

将数据复制到使用 ID3D11DeviceContext3::Map 映射的D3D11_USAGE_DEFAULT纹理中,同时提供 NULL D3D11_MAPPED_SUBRESOURCE 参数。

语法

void WriteToSubresource(
  [in]           ID3D11Resource  *pDstResource,
  [in]           UINT            DstSubresource,
  [in, optional] const D3D11_BOX *pDstBox,
  [in]           const void      *pSrcData,
  [in]           UINT            SrcRowPitch,
  [in]           UINT            SrcDepthPitch
);

参数

[in] pDstResource

类型: ID3D11Resource*

指向 ID3D11Resource) (目标资源的指针。

[in] DstSubresource

类型: UINT

一个从零开始的索引,用于标识目标子资源。 有关详细信息,请参阅 D3D11CalcSubresource

[in, optional] pDstBox

类型: const D3D11_BOX*

指向框的指针,该框定义要将资源数据复制到的目标子资源部分。 如果为 NULL,则数据将写入目标子资源,且无偏移量。 源的尺寸必须适合目标, (看到 D3D11_BOX) 。

空框会导致无操作。 如果顶值大于或等于底部值,或者左值大于或等于右值,或者前值大于或等于后的值,则框为空。 当框为空时,此方法不执行任何操作。

[in] pSrcData

类型: const void*

指向内存中源数据的指针。

[in] SrcRowPitch

类型: UINT

源数据的一行的大小。

[in] SrcDepthPitch

类型: UINT

源数据的一个深度切片的大小。

返回值

备注

提供的资源必须是 D3D11_USAGE_DEFAULT 纹理,之前调用 ID3D11DeviceContext3::Map 时映射为写入,同时提供 NULL D3D11_MAPPED_SUBRESOURCE 参数。

此 API 用于高频率调用。 调用方可以通过进行迭代调用来减少内存,这些调用会更新纹理的渐进区域,同时在每次调用期间提供较小的缓冲区。 不过,指定足够大的区域是最有效的,因为这允许 D3D 在返回之前填充纹理中的整个缓存行。

为提高效率,请确保框中的边界和对齐方式 ( 64/[每像素字节]) 像素水平。 垂直边界和对齐方式应为 2 行,除非使用每像素 1 字节格式,在这种情况下,建议使用 4 行。 每个调用的单个深度切片得到有效处理。 建议但不一定要提供 128 字节对齐的指针和步幅。

写入子 mipmap 级别时,建议使用比上述更大的宽度和高度。 这是因为小 mipmap 级别实际上可能存储在较大的内存块中,偏移量不透明,可能会干扰缓存行的对齐。

要求

要求
目标平台 Windows
标头 d3d11_3.h
Library D3D11.lib

另请参阅

ID3D11Device3