Procedura: Inizializzare la fase tessellatore

In generale, la tassellatura espande il modello compatto, definito dall'utente, di una patch in geometria che contiene una quantità programmabile di dettaglio. La geometria è in genere un set di triangoli che rappresenta la geometria dettagliata della superficie. In questo argomento viene illustrato come inizializzare la fase del tassellatore.

La fase a mosaico è la seconda di tre fasi che interagiscono per tessellare o affiancare una superficie. La prima fase è la fase hull-shader; funziona una volta per patch e configura il comportamento della fase successiva (tessellatore a funzione fissa). Uno hull shader genera anche output definiti dall'utente, ad esempio punti di controllo di output e costanti patch che vengono inviati oltre il tassellatore direttamente alla terza fase, la fase domain-shader. Un domain shader viene richiamato una volta per ogni punto di fase a mosaico e valuta le posizioni della superficie.

La fase del tassellatore è una fase di funzione fissa, non esiste alcun shader da generare e nessuna condizione da impostare. Riceve tutto lo stato di configurazione dalla fase hull-shader; una volta inizializzata la fase hull-shader, la fase del tassellatore viene inizializzata automaticamente.

Per inizializzare la fase del tassellatore

  • Inizializzare la fase hull-shader usando ID3D11DeviceContext::HSSetShader.

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

    ppClassInstances è un puntatore a una matrice di interfacce shader, rappresentate dai puntatori ID3D11ClassInstance e dal numero di interfacce, rappresentate da NumClassInstances. Se non viene usato, questi parametri possono essere impostati rispettivamente su NULL e 0.

Dopo l'inizializzazione della fase hull-shader, è necessario inizializzare anche la fase domain-shader.

Come usare Direct3D 11

Panoramica della tassellatura