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 |