ID3D11DeviceContext2::UpdateTiles 方法 (d3d11_2.h)
通过从应用内存复制到平铺资源来汇报磁贴。
语法
void UpdateTiles(
[in] ID3D11Resource *pDestTiledResource,
[in] const D3D11_TILED_RESOURCE_COORDINATE *pDestTileRegionStartCoordinate,
[in] const D3D11_TILE_REGION_SIZE *pDestTileRegionSize,
[in] const void *pSourceTileData,
[in] UINT Flags
);
参数
[in] pDestTiledResource
类型: ID3D11Resource*
指向要更新的平铺资源的指针。
[in] pDestTileRegionStartCoordinate
类型: const D3D11_TILED_RESOURCE_COORDINATE*
指向描述平铺资源的起始坐标 的D3D11_TILED_RESOURCE_COORDINATE 结构的指针。
[in] pDestTileRegionSize
类型: const D3D11_TILE_REGION_SIZE*
指向描述平铺区域大小的 D3D11_TILE_REGION_SIZE 结构的指针。
[in] pSourceTileData
类型: const void*
指向内存的指针,其中包含 UpdateTiles 用于更新平铺资源的源磁贴数据。
[in] Flags
类型: UINT
使用按位 OR 运算组合的 D3D11_TILE_COPY_FLAG类型值的组合。 唯一有效的值是 D3D11_TILE_COPY_NO_OVERWRITE。 其他值在这里没有意义,但根据定义, D3D11_TILE_COPY_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE 值基本上是 UpdateTiles 的作用,而是来自应用内存的源。
返回值
无
备注
UpdateTiles 将写入操作丢弃到未映射区域 (,但 Tier_1 平铺资源除外,其中写入到未映射区域) 无效。
如果复制操作涉及多次写入同一内存位置,因为目标资源中的多个位置映射到同一磁贴内存,则生成的对多映射磁贴的写入操作是不确定的且不可重复的;也就是说,对磁贴内存的访问以硬件执行复制操作的任何顺序发生。
复制操作涉及的磁贴不能包含包含打包的 mipmap 的磁贴,或者复制操作的结果未定义。 若要将数据传输到硬件打包到一个磁贴中的 mipmap 或从 mipmap 传输数据, 必须使用标准 (,即非磁贴特定的) 复制和更新 API (,例如 ID3D11DeviceContext1::CopySubresourceRegion1 和 ID3D11DeviceContext1::UpdateSubresource1) 或 ID3D11DeviceContext::GenerateMips 等整个 mipmap 链。
复制操作源端的数据的内存布局在 64 KB 磁贴内的内存中是线性的,硬件和驱动程序在与平铺资源之间传输时会相应地重排和取消重排每个磁贴。 对于多采样抗锯齿 (MSAA) 图面,硬件和驱动程序在移动到下一个像素之前按采样索引顺序遍历每个像素的样本。 对于在右侧部分填充的磁贴, (图面的宽度不是以像素) 表示的图块宽度的倍数,下移行的间距和步幅是拼贴已满时适合跨磁贴的数字像素的完整大小(以字节为单位)。 因此,内存中每一行像素之间可能存在间隔。 小于磁贴的 Mipmap 不会在线性布局中打包在一起,这似乎浪费了内存空间,但如前所述,不能使用 ID3D11DeviceContext2::CopyTiles 或 UpdateTiles 复制到硬件打包在一起的 mipmap。 只需使用泛型复制和更新 API (ID3D11DeviceContext1::CopySubresourceRegion1 和 ID3D11DeviceContext1::UpdateSubresource1) 单独复制小型 mipmap。 尽管在泛型复制 API (ID3D11DeviceContext1::CopySubresourceRegion1) 的情况下,线性内存必须与平铺资源维度相同; 例如,ID3D11DeviceContext1::CopySubresourceRegion1 无法从缓冲区资源复制到 Texture2D。
有关平铺资源的详细信息,请参阅 平铺资源。
要求
最低受支持的客户端 | Windows 8.1 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2012 R2 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | d3d11_2.h |
Library | D3D11.lib |