Mipmap 打包

根据平铺资源的 支持,具有特定尺寸的 mipmap 不遵循标准图块形状,并且被视为以对应用程序不透明的方式相互打包。 较高的支持层对于哪些类型的表面尺寸适合标准磁贴形状具有更广泛的保证(因此可以被应用程序单独映射)。

实现之间可能有所不同的是,给定平铺资源的尺寸、格式、mipmap 数量和数组切片,每个数组切片 (一些 M 个 mip) 可以打包到一些 N 个图块中。 ID3D11Device2::GetResourceTiling API 存在,允许驱动程序向应用程序报告 M 和 N (此 API 报告的、标准且不会因硬件供应商) 而变化的表面的其他详细信息。 打包 mip 的磁贴组仍为 64KB,并且可以被单独映射到磁贴池中的不同位置。 但磁贴的像素形状以及 mipmap 映射到磁贴组的方式是特定于硬件供应商的(由于太过复杂,此处不予讲解)。 因此,应用程序需要映射指定为打包磁贴的所有磁贴,或者一个也不映射。 否则,访问平铺资源的行为是不确定的。

对于数组化表面,打包 mip 组和存储这些 mip 的打包磁贴的数量(上文中所说的 M 和 N)为每个数组切片单独应用。

用于 (ID3D11DeviceContext2::CopyTilesID3D11DeviceContext2::UpdateTiles) 复制磁贴的专用 API 无法访问打包的 mips。 要向/从打包的 mips 复制数据的应用程序可以使用所有非平铺资源特定的 API 来复制和呈现到图面。

如何平铺资源的区域平铺