2.2.3常量缓冲区
2.2.3.1常量缓冲区概述(constant buffer)
常量缓冲区是第一个我们接触的能进入可编程着色器阶段并且随后被HLSL代码使用的资源类型,一个常量缓冲区被用来向一个正在管线中执行的可编程着色器 应用程序提供常量信息。术语常量(constant)指的是在这个缓冲区内保存的常量通过绘画、调度调用等不会发生变化的事实。只改变管线调用之间的任何信息,例如世界变换矩阵或者对象颜色,在一个常量缓冲区被提供给着色器程序。这个机制是数据从主程序变换到可编程着色器阶段的主要思想。包含在一个常量缓冲区里的信息类型和数量可能从一个缓冲区到另一个缓冲区改变。这完全依靠每一个特定所需着色器程序的数据,并且在一个着色器程序被结构声明所定义。缓冲区能被定制在一定程度上任何 基本HLSL类型组合,以及创建这些基本类型组合。HLSL基本类型包括标量、向量、矩阵,这些类型数组、实例类和这些结构类的组合。一个这些类型的组合如图2.2.3.1描述。
迄今为止常量缓冲区与其他我们讨论过的缓冲区有些不同,顶点缓冲区和索引缓冲区定义了一个基本数据元素然后在一个类似数组形式多次重复。常量缓冲区定义了一个基本元素后,不会提供元素的多个实例,缓冲区会创建一个足够大的能容纳预期的信息,但是不会更大,这暗示常量缓冲区创建了一个结构而不是数组。