如何:初始化细化器阶段

通常,细化会将用户定义补丁的紧凑模型扩展到包含可编程细节量的几何图形中。 几何图形通常是表示详细表面几何图形的一组三角形。 本主题演示如何初始化细化器阶段。

细化器阶段是协同工作以细化或平铺图面的三个阶段中的第二个阶段。 第一阶段是外壳着色器阶段:它为每个修补程序运行一次,并配置下一阶段 (固定函数细化器) 的行为方式。 外壳着色器还会生成用户定义的输出,例如输出控制点和修补常量,这些输出通过细化器直接发送到第三阶段,即域着色器阶段。 域着色器为每个细化器阶段点调用一次,并计算图面位置。

细化器阶段是一个固定函数阶段,没有要生成的着色器,也没有要设置的状态。 它从外壳着色器阶段接收其所有设置状态;初始化外壳着色器阶段后,将自动初始化细化器阶段。

初始化细化器阶段

  • 使用 ID3D11DeviceContext::HSSetShader 初始化外壳着色器阶段。

    void HSSetShader(
      ID3D11HullShader *pHullShader,  
      ID3D11ClassInstance *const *ppClassInstances,
      UINT NumClassInstances
    );
    

    ppClassInstances 是指向着色器接口数组的指针,由 ID3D11ClassInstance 指针表示,接口数由 NumClassInstances 表示。 如果未使用,这些参数可以分别设置为 NULL 和 0。

初始化外壳着色器阶段后,还应初始化域着色器阶段。

如何使用 Direct3D 11

分割概述