ID3D11Device3::ReadFromSubresource 方法 (d3d11_3.h)

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

语法

void ReadFromSubresource(
  [out]          void            *pDstData,
  [in]           UINT            DstRowPitch,
  [in]           UINT            DstDepthPitch,
  [in]           ID3D11Resource  *pSrcResource,
  [in]           UINT            SrcSubresource,
  [in, optional] const D3D11_BOX *pSrcBox
);

参数

[out] pDstData

类型: void*

指向内存中目标数据的指针。

[in] DstRowPitch

类型: UINT

目标数据的一行的大小。

[in] DstDepthPitch

类型: UINT

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

[in] pSrcResource

类型: ID3D11Resource*

指向源资源的指针 (请参阅 ID3D11Resource) 。

[in] SrcSubresource

类型: UINT

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

[in, optional] pSrcBox

类型: const D3D11_BOX*

指向框的指针,该框定义要从中复制资源数据的目标子资源部分。 如果为 NULL,则从目标子资源读取数据,且不带偏移量。 目标的尺寸必须适合目标, (D3D11_BOX)

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

返回值

备注

提供的资源必须是 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