如何:创建域着色器

域着色器是三个阶段中的第三个阶段,共同实现 分割。 域着色器阶段的输入来自外壳着色器。 本主题演示如何创建域着色器。

域着色器使用外壳着色器输出控制点、船体着色器输出修补常量数据和单个细化器紫外线坐标集) 固定函数阶段创建的图面几何图形 (转换。

创建域着色器

  1. 设计域着色器。 请参阅 如何:设计域着色器

  2. 编译着色器代码。

  3. 使用 ID3D11Device::CreateDomainShader 创建域着色器对象。

    HRESULT CreateDomainShader(
      const void *pShaderBytecode, // 
      SIZE_T BytecodeLength, // 
      ID3D11ClassLinkage *pClassLinkage, // 
      ID3D11DomainShader **ppDomainShader
    );
    
  4. 使用 ID3D11DeviceContext::D SSetShader 初始化管道阶段。

    void DSSetShader(
      ID3D11DomainShader *pDomainShader, // 
      ID3D11ClassInstance *const *ppClassInstances,
      UINT NumClassInstances
    );
    

如果外壳着色器绑定,则必须将域着色器绑定到管道。 特别是,使用几何着色器直接流出外壳着色器控制点并无效。

如何使用 Direct3D 11

分割概述