rendering Multiple-Pass
Il rendering a più passaggi è un processo in cui un'applicazione attraversa più volte il grafico della scena per produrre un output di cui eseguire il rendering sullo schermo. Il rendering a più passaggi migliora le prestazioni perché suddivide 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 di rendering (ad esempio, Draw) in un contesto differito. Al termine dell'attraversamento, l'applicazione chiama il metodo FinishCommandList nel contesto differito. Infine, l'applicazione chiama il metodo ExecuteCommandList nel contesto immediato per eseguire i comandi in ogni elenco di comandi.
Lo pseudocodice 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 visualizzazione delle risorse dello shader (SRV). Per ulteriori informazioni sui contesti immediati e posticipati, consultare Rendering immediato e posticipato.
Argomenti correlati