如何平铺资源的区域平铺

创建平铺资源时,尺寸、格式元素大小以及 mipmap 和/或数组切片的数量 ((如果适用) 确定支持整个外围应用所需的磁贴数)。 磁贴内的像素/字节布局由实现来确定。 适合磁贴的像素数量取决于格式元素大小,并且是固定和相同的,无论你是否使用标准重排。

以下部分中的表已明确定义给定图面大小和格式元素宽度使用的磁贴数,并且可根据这些表预测磁贴数。 对于包含 mipmap 的资源或图面尺寸不填充磁贴的情况,存在一些约束, Mipmap 打包中对此进行了讨论。

不同的平铺资源可以指向格式不同的相同内存,只要应用程序不依赖于以一种格式写入内存并使用另一种格式读取的结果。 但是,在受限的情况下,如果两种格式属于同一格式系列,则应用程序可以依赖于以一种格式写入内存并使用另一种格式读取的结果 (即,它们) 具有相同的无类型父格式。 例如,DXGI_FORMAT_R8G8B8A8_UNORM 和 DXGI_FORMAT_R8G8B8A8_UINT 彼此兼容,但不兼容 DXGI_FORMAT_R16G16_UNORM。 应用程序必须保守地匹配所有资源属性才能在两个纹理之间重新解释数据,因为平铺模式非常保守地未定义。 显然,格式更宽松。 格式只需兼容,如上所示。 例外情况是,来自别名为另一种格式的格式中的出血数据已被明确定义:如果磁贴的所有位都完全包含 0,则该磁贴可以使用将内存内容解释为 0 的任何格式(不考虑内存布局)。 因此,使用格式 DXGI_FORMAT_R8_UNORM 可将磁贴清除为 0x00,然后与 DXGI_FORMAT_R32G32_FLOAT 等格式一同使用,磁贴仍会将内容显示为 (0.0f,0.0f)。

磁贴中数据的布局可能取决于资源属性、它所在的子资源以及子资源中的磁贴位置。 主要例外情况如上所示:与其他资源属性相等的兼容格式,并且所有纹素都是相同的模式时。

在本节中

主题 说明
Texture2D 和 Texture2DArray 子资源平铺
这些表说明了 Texture2DTexture2DArray 子资源的平铺方式。
Texture3D 子资源平铺
此表说明了 Texture3D 子资源的平铺方式。
缓冲区平铺
一个缓冲区资源分为多个 64KB 的磁贴,如果最后一个磁贴的大小不是 64KB 的倍数,其中会有一些空白空间。
Mipmap 打包
根据平铺资源的 支持,具有特定尺寸的 mipmap 不遵循标准图块形状,并且被视为以对应用程序不透明的方式相互打包。

创建平铺资源