创建平铺资源

平铺资源是通过在创建资源时指定 D3D11_RESOURCE_MISC_TILED 标志来创建的。

有关何时可以使用 D3D11_RESOURCE_MISC_TILED 创建资源的限制,请参阅 平铺资源创建参数

创建资源时,将在图形系统中分配非平铺资源的存储。 例如,调用 ID3D11Device::CreateTexture2D 来创建 2D 纹理数组时,图形系统将为这些 2D 纹理分配存储。 创建平铺资源时,图形系统不会为资源内容分配存储。 相反,当应用程序创建平铺资源时,图形系统仅为平铺图面的区域预留地址空间,然后允许应用程序控制图块的映射。 磁贴“映射”只是内存中的物理位置,其中资源中的逻辑磁贴会指向此位置(或者对未映射磁贴来说为 NULL)。 不要将此概念与映射 Direct3D 资源以实现 CPU 访问混淆,虽然两者使用同一个名称,但是完全独立的。 在知道一个图面的所有磁贴无需一次映射完的情况下,你将能够定义并根据需要更改每个磁贴的映射,从而有效利用可用内存量。

本部分提供有关如何创建平铺资源的详细信息。

在本节中

主题 说明
映射到磁贴池
使用 D3D11_RESOURCE_MISC_TILED 标志创建资源时,构成资源的磁贴来自指向磁贴池中的位置。 磁贴池是内存池(由一个或多个分配在后台提供支持 - 对应用程序不可见)。
平铺资源创建参数
可以使用 D3D11_RESOURCE_MISC_TILED 标志创建的 Direct3D 资源类型存在一些约束。 本部分提供用于创建平铺资源的有效参数。
可用于平铺资源的地址空间
本部分指定可用于平铺资源的虚拟地址空间。
磁贴池创建参数
使用本部分中的参数通过 ID3D11Device::CreateBuffer API 定义磁贴池。
跨进程和设备共享平铺资源
磁贴池可与传统资源等其他进程共享。 引用磁贴池的平铺资源不能在设备和进程之间共享。 但是,单独的进程可以创建自己的平铺资源,这些资源映射到这些平铺资源之间共享的磁贴池。
对平铺资源可用的操作
本部分列出了可以对平铺资源执行的操作。
可用于磁贴池的操作
本部分列出了可以对磁贴池执行的操作。
如何平铺资源的区域平铺
创建平铺资源时,尺寸、格式元素大小以及 mipmap 和/或数组切片的数量 ((如果适用) 确定支持整个外围应用所需的磁贴数)。

平铺资源