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 |