流式资源区域的平铺方式

创建流式资源时,尺寸、格式元素大小以及 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 打包

可将一定数量的 mip(每个数组切片)打包到一定数量的磁贴中,这取决于流式资源的尺寸、格式、mipmap 的数量和数组切片。

 

创建流式资源