共用方式為


如何:建立殼層著色器

殼層著色器是三個階段的前三個階段,可一起實 作鑲嵌。 殼層著色器輸出會驅動鑲嵌器階段,以及網域著色器階段。 本主題說明如何建立殼層著色器。

殼層著色器會將一組輸入控制點 (從頂點著色器) 轉換成一組輸出控制點。 根據轉換 (一般轉換是基礎轉換) ,輸入和輸出點的數目可能會因內容和數位而異。

殼層著色器也會輸出網域著色器和鑲嵌器的修補常數資訊,例如鑲嵌因數。 固定函數鑲嵌器階段會使用鑲嵌因數,以及在殼層著色器中宣告的其他狀態,來判斷鑲嵌多少。

建立殼層著色器

  1. 設計殼層著色器。 請參閱 如何:設計殼層著色器

  2. 編譯著色器程式碼

  3. 使用 ID3D11Device::CreateHullShader建立殼層著色器物件。

    HRESULT CreateHullShader(
      const void *pShaderBytecode,  
      SIZE_T BytecodeLength,  
      ID3D11ClassLinkage *pClassLinkage,  
      ID3D11HullShader **ppHullShader
    );
    
  4. 使用 ID3D11DeviceCoNtext::HSSetShader初始化管線階段。

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

如果殼層著色器系結,網域著色器必須系結至管線。 特別是,使用幾何著色器直接串流出殼層著色器控制點並無效。

如何使用 Direct3D 11

鑲嵌概觀