管道阶段 (Direct3D 10)

Direct3D 10 可编程管道设计用于为实时游戏应用程序生成图形。 下图显示了从输入到输出的每个可编程阶段的数据流。

direct3d 10 可编程管道中数据流的示意图

可以使用 API 配置所有阶段。 具有常见着色器核心 (圆角矩形块) 的阶段可以使用 HLSL 编程语言进行编程。 如你所看到的,这使得管道非常灵活和适应性强。 下面列出了每个阶段的用途。

  • 输入装配器阶段 - 输入装配器阶段负责 (管道) 三角形、线条和点提供数据。
  • 顶点着色器阶段 - 顶点着色器阶段处理顶点,通常执行诸如转换、换肤以及照明之类的操作。 顶点着色器始终获取一个输入顶点并生成一个输出顶点。
  • 几何着色器阶段 - geometry-shader 阶段处理整个基元。 它的输入是一个完整的基元 (一个三角形的三个顶点、一条线的两个顶点或一个点) 的单个顶点。 此外,每个基元还可以包含任何边缘相邻基元的顶点数据。 这最多可以包括一个三角形的另外三个顶点或一条线的另外两个顶点。 几何着色器还支持有限的几何放大和解扩。 在给定输入基元的情况下,几何着色器可以丢弃基元,或者发出一个或多个新的基元。
  • 流输出阶段 - 流输出阶段旨在将基元数据从管道流式传输到内存,并传输到光栅器。 数据可以流出和/或传递到光栅器中。 流出到内存的数据可以作为输入数据再次循环回到管道,或者从 CPU 读回。
  • 光栅器阶段 - 光栅器负责剪裁基元、为像素着色器准备基元并确定如何调用像素着色器。
  • 像素着色器阶段 - 像素着色器阶段接收基元的插值数据并生成每像素数据,如颜色。
  • 输出合并阶段 - 输出合并阶段负责将各种类型的输出数据 (像素着色器值、深度和模具信息) 与呈现目标和深度/模具缓冲区的内容相结合,以生成最终管道结果。

Direct3D 10 编程指南