Condividi tramite


rendering Multiple-Pass

Il rendering a più passaggi è un processo in cui un'applicazione attraversa il grafico della scena più volte per produrre un output da eseguire per il rendering dello schermo. Il rendering in più passaggi migliora le prestazioni perché suddivide le scene complesse in attività che possono essere eseguite simultaneamente.

Per eseguire il rendering a più passaggi, creare un contesto posticipato e un elenco di comandi per ogni passaggio aggiuntivo. Mentre l'applicazione attraversa il grafico della scena, registra i comandi (ad esempio, i comandi di rendering come Draw) in un contesto posticipato. Al termine dell'attraversamento, l'applicazione chiama il metodo FinishCommandList nel contesto posticipato. Infine, l'applicazione chiama il metodo ExecuteCommandList nel contesto immediato per eseguire i comandi in ogni elenco di comandi.

Lo pseudococo seguente illustra come eseguire il rendering a più passaggi:

{
 ImmCtx->SetRenderTarget( pRTViewOfResourceX );
 DefCtx1->SetTexture( pSRView1OfResourceX );
 DefCtx2->SetTexture( pSRView2OfResourceX );

 for () // Traverse the scene graph.
  {
    ImmCtx->Draw(); // Pass 0: immediate context renders primitives into resource X.

    // The following texturing by the deferred contexts occurs after the 
    // immediate context makes calls to ExecuteCommandList. 
    // Resource X is then comletely updated by the immediate context. 
    DefCtx1->Draw(); // Pass 1: deferred context 1 performs texturing from resource X.
    DefCtx2->Draw(); // Pass 2: deferred context 2 performs texturing from resource X.
      }

  // Create command lists and record commands into them.
  DefCtx1->FinishCommandList( &pCL1 ); 
  DefCtx2->FinishCommandList( &pCL2 );

  ImmCtx->ExecuteCommandList( pCL1 ); // Execute pass 1.
  ImmCtx->ExecuteCommandList( pCL2 ); // Exeucte pass 2.
}

Nota

Il contesto immediato modifica una risorsa, associata al contesto immediato come visualizzazione di destinazione di rendering (RTV); al contrario, ogni contesto posticipato usa semplicemente la risorsa, associata al contesto posticipato come vista risorsa shader (SRV). Per altre informazioni sui contesti immediati e posticipati, vedere Rendering immediato e posticipato.

 

Rendering