Delen via


Handleiding: Een Hull Shader maken

Een rompschaduw is de eerste van drie fasen die samenwerken om tesselatiete implementeren. De hull-shader stuurt zowel de tessellatie-fase als de domein-shader-fase aan. In dit onderwerp wordt beschreven hoe je een hull shader maakt.

Een hull shader transformeert een set invoerbesturingspunten (van een vertex shader) in een set uitvoerbesturingspunten. Het aantal invoer- en uitvoerpunten kan variƫren in inhoud en aantal, afhankelijk van de transformatie (een typische transformatie is een basistransformatie).

Een hull shader levert ook patch-constante informatie op, zoals tessellation-factoren, voor een domein-shader en de tessellator. De vaste-functie-tessellatorfase maakt gebruik van de tessellationfactoren en andere toestanden die zijn gedeclareerd in een hull shader om te bepalen hoeveel te tesselleren.

Om een rompschaduw te maken

  1. Ontwerp een hull shader. Zie Hoe te: Ontwerpen van een Hull Shader.

  2. De shader-code compileren

  3. Maak een hull-shader-object met ID3D11Device::CreateHullShader.

    HRESULT CreateHullShader(
      const void *pShaderBytecode,  
      SIZE_T BytecodeLength,  
      ID3D11ClassLinkage *pClassLinkage,  
      ID3D11HullShader **ppHullShader
    );
    
  4. Initialiseer de pijplijnfase met behulp van ID3D11DeviceContext::HSSetShader.

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

Een domeinshader moet aan de pijplijn zijn gebonden als een rompshader is gebonden. Vooral is het niet geldig om controlepunten van de hull shader rechtstreeks met de geometrieshader te streamen.

Direct3D 11 gebruiken

Overzicht van Tessellation