OpenGL 对硬件曲面细分的支持,通过3 个管线阶段提供:
(1)曲面细分控制着色器;
(2)曲面细分器;
(3)曲面细分评估着色器。
(1)C++/OpenGL 应用程序:
创建一个摄像机和相关的MVP 矩阵,视图(v)和投影(p)矩阵确定摄像机朝向,模
型(m)矩阵可用于修改网格的位置和方向。
(2)顶点着色器:
在这个例子中基本上什么都不做,顶点将在曲面细分器中生成。
(3)曲面细分控制着色器:
指定曲面细分器要构建的网格。
(4)曲面细分评估着色器:
将MVP 矩阵应用于网格中的顶点。
(5)片段着色器:
只需为每个像素输出固定颜色。
曲面细分器生成由两个参数定义的顶点网格:内层级别和外层级别。在这种情况下,
内层级别为12,外层级别为6——网格的外边缘被分为6 段,而跨越内部的线被分为
12 段。
程序12.1 中的特别相关的新结构被高亮显示。让我们首先讨论第一部分——C++/
OpenGL 代码。
编译这两个新着色器,跟顶点和片段着色器完全相同。然后将它们附加到同一个渲染程
序,并且链接调用保持不变。唯一的新项目是用于指定要实例化的着色器类型的常量——新
常量如下:
G
1