描述符表概述

每个描述符表存储一种或多种类型的描述符-SRV、UAV、CBV 和采样器。 描述符表不是内存分配;它只是描述符堆的偏移量和长度。

引用描述符表

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

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

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

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

描述符表