根签名
根签名定义绑定到图形管道的资源类型。
在本部分中
主题 | 描述 |
---|---|
根签名概述 |
根签名由应用配置,并将命令列表链接到着色器所需的资源。 图形命令列表具有图形和计算根签名。 计算命令列表将只包含一个计算根签名。 这些根签名彼此独立。 |
使用根签名 |
根签名是描述符表(包括其布局)、根常量和根描述符的任意排列集合的定义。 每个条目都有最大限制的成本,因此应用程序可以权衡根签名将包含的每种条目类型之间的平衡。 |
创建根签名 |
根签名是包含嵌套结构的复杂数据结构。 可以使用下面的数据结构定义(包括帮助初始化成员的方法)以编程方式定义这些对象。 或者,可以使用高级底纹语言(HLSL)编写它们,使编译器能够尽早验证布局是否与着色器兼容。 |
根签名限制 |
根签名是黄金房地产,有严格的限制和成本需要考虑。 |
直接在根签名中使用常量 |
应用程序可以在根签名中定义根常量,每个常量都是一组 32 位值。 它们以高级底纹语言(HLSL)作为常量缓冲区出现。 请注意,由于历史原因,常量缓冲区被视为 4x32 位值的集。 |
直接在根签名中使用描述符 |
应用程序可以直接将描述符置于根签名中,以避免必须经历描述符堆。 这些描述符在根签名中占用了大量空间(请参阅根签名限制部分),因此应用程序必须谨慎使用它们。 |
示例根签名 |
以下部分显示根签名的复杂性从空到完全完整。 |
在 HLSL 中指定根签名 |
在 HLSL 着色器模型 5.1 中指定根签名是C++代码中指定根签名的替代方法。 |
根签名版本 1.1 |
根签名版本 1.1 的目的是使应用程序能够在描述符堆中的描述符不会更改或数据描述符指向不会更改时向驱动程序指示。 这允许驱动程序的选项进行优化,这些优化可能知道描述符或它指向的内存在一段时间内是静态的。 |