Procedura: Creare un domain shader

Uno shader di dominio è il terzo di tre fasi che interagiscono per implementare la tessellazione. Gli input per la fase domain-shader provengono da uno shader dello scafo. Questo argomento illustra come creare uno shader di dominio.

Un domain shader trasforma la geometria della superficie (creata dalla fase del tessellatore a funzione fissa) usando i punti di controllo output dello shader dello hull, i dati della costante patch di output dello hull shader e un singolo set di coordinate uv tessellator.

Per creare uno shader di dominio

  1. Progettare uno shader di dominio. Vedere Procedura: progettare un domain shader.

  2. Compilare il codice shader.

  3. Creare un oggetto domain-shader usando ID3D11Device::CreateDomainShader.

    HRESULT CreateDomainShader(
      const void *pShaderBytecode, // 
      SIZE_T BytecodeLength, // 
      ID3D11ClassLinkage *pClassLinkage, // 
      ID3D11DomainShader **ppDomainShader
    );
    
  4. Inizializzare la fase della pipeline usando ID3D11DeviceContext::D SSetShader.

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

Un domain shader deve essere associato alla pipeline se è associato uno shader dello scafo. In particolare, non è valido per trasmettere direttamente i punti di controllo dello shader dello scafo con il geometry shader.

Come usare Direct3D 11

Panoramica della tessellazione