图形管道

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

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

Microsoft Direct3D 11 的图形管道支持与 Direct3D 10 图形管道相同的阶段,还有其他阶段来支持高级功能。

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

在本节中

主题 描述
输入汇编程序阶段
Direct3D 10 及更高版本的 API 将管道的功能区域分为多个阶段:管道中的第一个阶段是输入汇编程序 (IA) 阶段。
顶点着色器阶段
顶点着色器 (VS) 阶段处理输入汇编程序的顶点,执行每个顶点运算,例如转换、外观、变形和每顶点照明。 顶点着色器始终在单个输入顶点上运行并生成单个输出顶点。 顶点着色器阶段必须始终处于活动状态,管道才能执行。 如果不需要顶点修改或转换,则必须创建直通顶点着色器并将其设置到管道中。
分割阶段
Direct3D 11 运行时支持实现分割的三个新阶段,这将在 GPU 上将低细节细分图面转换为更详细的基元。 分割将高阶图面平铺(或分裂)成合适的结构以进行渲染。
几何着色器阶段
几何着色器 (GS) 阶段运行应用程序指定的着色器代码,其中顶点作为输入,并且能够在输出时生成顶点。
流输出阶段
流输出阶段的目的是连续输出 (或流式传输) 顶点数据,如果 geometry-shader 阶段 (或顶点着色器阶段处于非活动状态,) 内存中的一个或多个缓冲区 (看到流输出阶段) 入门
光栅器阶段
光栅化阶段将矢量信息(由形状或基元构成)转换为光栅图像(由像素构成)以便显示实时 3D 图形。
像素着色器阶段
像素着色器阶段 (PS) 可实现丰富的着色技术,例如每像素照明和后期处理。 像素着色器是一个程序,它将常变量、纹理数据、内插的每顶点值和其他数据组合起来以生成每像素输出。 光栅器阶段对基元覆盖的每个像素调用一次像素着色器,但是,可以指定 NULL 着色器以避免运行着色器。
输出合并阶段
输出合并 (OM) 阶段使用管道状态、像素着色器生成的像素数据、呈现目标的内容以及深度/模具缓冲区的内容的组合来生成最终呈现的像素颜色。 OM 阶段是确定哪些像素可见的最后一步, (深度模具测试) 并混合最终像素颜色。