ID3D11DeviceContext2::CopyTileMappings 方法 (d3d11_2.h)
将映射从源图块式资源复制到目标图块式资源。
语法
HRESULT CopyTileMappings(
[in] ID3D11Resource *pDestTiledResource,
[in] const D3D11_TILED_RESOURCE_COORDINATE *pDestRegionStartCoordinate,
[in] ID3D11Resource *pSourceTiledResource,
[in] const D3D11_TILED_RESOURCE_COORDINATE *pSourceRegionStartCoordinate,
[in] const D3D11_TILE_REGION_SIZE *pTileRegionSize,
[in] UINT Flags
);
参数
[in] pDestTiledResource
类型: ID3D11Resource*
指向目标平铺资源的指针。
[in] pDestRegionStartCoordinate
类型: const D3D11_TILED_RESOURCE_COORDINATE*
指向 D3D11_TILED_RESOURCE_COORDINATE 结构的指针,该结构描述目标平铺资源的起始坐标。
[in] pSourceTiledResource
类型: ID3D11Resource*
指向源平铺资源的指针。
[in] pSourceRegionStartCoordinate
类型: const D3D11_TILED_RESOURCE_COORDINATE*
指向描述源平铺资源的起始坐标 的D3D11_TILED_RESOURCE_COORDINATE 结构的指针。
[in] pTileRegionSize
类型: const D3D11_TILE_REGION_SIZE*
指向描述平铺区域大小的 D3D11_TILE_REGION_SIZE 结构的指针。
[in] Flags
类型: UINT
使用按位 OR 运算组合的 D3D11_TILE_MAPPING_FLAGS 值的组合。 唯一有效的值为 D3D11_TILE_MAPPING_NO_OVERWRITE,该值指示以前提交到可能仍在执行的设备的命令不会引用任何正在更新的磁贴区域。 然后,设备可以避免必须刷新以前提交的工作来执行磁贴映射更新。 如果应用通过更新图块资源中仍被未完成命令引用的位置的磁贴映射来违反此承诺,则会导致未定义的呈现行为,包括某些体系结构可能会显著减速。 这类似于 Direct3D API 中其他位置存在的“不覆盖”概念,但应用于磁贴映射数据结构本身 (硬件中是页表) 。 缺少 D3D11_TILE_MAPPING_NO_OVERWRITE 值要求必须先完成 CopyTileMappings 指定的磁贴映射更新,然后才能继续执行任何后续 Direct3D 命令。
返回值
类型: HRESULT
如果成功,则返回S_OK;否则, 返回下列值之一:
- 如果各种条件(如无效标志或传入非平铺资源)导致调用被删除,则返回 E_INVALIDARG 。 dest 和源区域必须完全适合其资源或行为未定义, (调试层将发出错误) 。
- 如果调用导致驱动程序必须为新的页表映射分配空间,但内存不足,则返回 E_OUTOFMEMORY 。 如果在命令列表中调用此命令并正在执行命令列表时出现内存不足,则将删除设备。 应用程序只需执行更新调用即可避免这种情况,这些调用更改命令列表中的平铺资源中的现有映射 (因此驱动程序不必分配页表内存,只需更改映射) 。
注解
CopyTileMappings 可帮助完成诸如在平铺资源内和跨磁贴资源移动映射等任务,例如滚动磁贴。 源区域和目标区域可以重叠;在这种情况下,复制的结果就像源已保存到临时位置,然后从该位置写入目标。
有关平铺资源的详细信息,请参阅 平铺资源。
要求
最低受支持的客户端 | Windows 8.1 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2012 R2 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | d3d11_2.h |
Library | D3D11.lib |