描述符表概述

每个描述符表都存储一个或多个 — SRVs、uav、CBVs 和取样器类型的描述符。 描述符表不是内存分配;它只是描述符堆中的偏移量和长度。

引用描述符表

通过根签名,图形管道可通过按索引引用描述符表来获得对资源的访问权限。

描述符表实际上只是描述符堆的子范围。 描述符堆表示一批描述符的基础内存分配。 由于内存分配是创建描述符堆的属性,因此可确保从描述符堆中定义描述符表的成本与在堆中向硬件标识区域的成本一样低。 不需要在 API 级别创建或销毁描述符表 - 系统仅会在堆被引用时向驱动程序将它们标识为堆的偏移量和大小。

当应用的着色器需要能够动态地(可能由材料数据驱动)从大量可用的描述符中自由进行选择(通常是引用纹理)时,应用则完全可以定义非常大的描述符表。

根签名可引用描述符表条目,其中包含对堆、表的起始位置(与堆的起始处的偏移量)以及表的长度(在条目中)的引用。 下图显示了这些概念:描述符表从根签名中的指针和描述符堆中的描述符,引用堆中的完整纹理或缓冲区数据 (对于纹理,默认堆) 。

描述符表