Partager via


rendu Multiple-Pass

Le rendu à plusieurs pas est un processus dans lequel une application traverse plusieurs fois son graphique de scène pour produire une sortie à afficher. Le rendu à plusieurs pas améliore les performances, car il décompose les scènes complexes en tâches qui peuvent s’exécuter simultanément.

Pour effectuer un rendu à plusieurs pass, vous créez un contexte différé et une liste de commandes pour chaque passe supplémentaire. Bien que l’application traverse le graphique de scène, elle enregistre les commandes (par exemple, les commandes de rendu telles que Draw) dans un contexte différé. Une fois l’application terminée, elle appelle la méthode FinishCommandList sur le contexte différé. Enfin, l’application appelle la méthode ExecuteCommandList sur le contexte immédiat pour exécuter les commandes dans chaque liste de commandes.

Le pseudocode suivant montre comment effectuer un rendu à plusieurs pass :

{
 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.
}

Notes

Le contexte immédiat modifie une ressource, qui est liée au contexte immédiat en tant qu’affichage cible de rendu (RTV) ; en revanche, chaque contexte différé utilise simplement la ressource, qui est liée au contexte différé en tant qu’affichage de ressource nuanceur (SRV). Pour plus d’informations sur les contextes immédiats et différés, consultez Rendu immédiat et différé.

 

Rendu