图形管道
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 阶段是确定哪些像素可见的最后一步, (深度模具测试) 并混合最终像素颜色。 |