Freigeben über


Vorgehensweise: Erstellen eines Domänenshaders

Ein Domänenshader ist die dritte von drei Phasen, die bei der Implementierung von Tessellation zusammenarbeiten. Die Eingaben für die Domänen-Shader-Phase stammen von einem Hull-Shader. In diesem Thema wird gezeigt, wie Sie einen Domänenshader erstellen.

Ein Domänen-Shader transformiert die Oberflächengeometrie (erstellt von der Tessellatorstufe mit festen Funktionen) mithilfe von Ausgabe-Steuerungspunkten des Hull-Shaders, daten zur Ausgabe der Patchkonstante des Hull-Shaders und einem einzelnen Satz von Tessellator UV-Koordinaten.

So erstellen Sie einen Domänenshader

  1. Entwerfen sie einen Domänenshader. Weitere Informationen finden Sie unter Vorgehensweise: Entwerfen eines Domänenshaders.

  2. Kompilieren Sie den Shadercode.

  3. Erstellen Sie mithilfe von ID3D11Device::CreateDomainShader ein Domain-Shader-Objekt.

    HRESULT CreateDomainShader(
      const void *pShaderBytecode, // 
      SIZE_T BytecodeLength, // 
      ID3D11ClassLinkage *pClassLinkage, // 
      ID3D11DomainShader **ppDomainShader
    );
    
  4. Initialisieren Sie die Pipelinephase mithilfe von ID3D11DeviceContext::D SSetShader.

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

Ein Domänenshader muss an die Pipeline gebunden sein, wenn ein Hull-Shader gebunden ist. Insbesondere ist es nicht gültig, Rumpf-Shader-Steuerungspunkte direkt mit dem Geometrie-Shader zu streamen.

Verwenden von Direct3D 11

Tessellation– Übersicht