输入装配器阶段

Direct3D 10 及更高版本的 API 将管道的功能区域分为多个阶段:管道中的第一个阶段是输入汇编程序 (IA) 阶段。

输入装配器阶段的目的是从用户填充的缓冲区中读取基元数据 (点、线和/或三角形) ,并将数据组装成将由其他管道阶段使用的基元。 IA 阶段可以将顶点装配成多种不同的基元类型(如线列表、三角形带或邻接的基元)。 添加了新的基元类型 (,例如具有相邻性的线条列表或具有相邻) 的三角形列表,以支持几何着色器。

邻接信息仅在几何着色器中对应用程序可见。 例如,如果用包含邻接的三角形调用几何着色器,则输入数据将包含每个三角形的 3 个顶点和每个三角形邻接数据的 3 个顶点。

当请求输入汇编程序阶段输出相邻数据时,输入数据必须包含相邻数据。 这可能需要提供虚拟顶点(形成退化三角形),或在某个顶点属性中标记该顶点是否存在。 这也需要由几何着色器检测和处理,虽然光栅化阶段会剔除退化几何图形。

在组合基元时,IA 的次要用途是附加 系统生成的值 ,以帮助提高着色器的效率。 系统生成的值是又称作语义的文本字符串。 所有三个着色器阶段都是从一个通用着色器核心构造的,着色器核心使用系统生成的值 (,例如基元 ID、实例 ID 或顶点 ID) ,以便着色器阶段可以将处理量减少到仅那些尚未处理的基元、实例或顶点。

管道块图所示,一旦 IA 阶段从内存中读取数据 (将数据组装成基元并将系统生成的值附加到) ,数据将输出到 顶点着色器阶段

在本节中

主题 说明
使用Input-Assembler阶段入门
初始化输入汇编程序 (IA) 阶段需要执行几个步骤。 例如,需要使用管道所需的顶点数据创建缓冲区资源,告诉 IA 阶段缓冲区的位置及其包含的数据类型,并指定要从数据中组合的基元类型。
基元拓扑
Direct3D 10 及更高版本支持由D3D_PRIMITIVE_TOPOLOGY枚举类型表示的多种基元类型 (或拓扑 ) 。 这些类型定义管道如何解释和呈现顶点。
在不使用缓冲区的情况下使用Input-Assembler阶段
如果着色器不需要缓冲区,则不需要创建和绑定缓冲区。 本部分包含绘制单个三角形的简单顶点和像素着色器的示例。
使用System-Generated值
系统生成的值由 IA 阶段 (基于用户提供的输入 语义 生成,) 允许着色器操作的一定效率。

图形管道

管道阶段 (Direct3D 10)