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