Compartilhar via


renderização de Multiple-Pass

A renderização de passagem múltipla é um processo no qual um aplicativo atravessa seu grafo de cena várias vezes para produzir uma saída para renderizar para a exibição. A renderização de vários passes melhora o desempenho porque divide cenas complexas em tarefas que podem ser executadas simultaneamente.

Para executar a renderização de várias passas, crie uma lista de comandos e contexto adiados para cada passagem adicional. Enquanto o aplicativo atravessa o grafo de cena, ele registra comandos (por exemplo, renderizando comandos como Draw) em um contexto adiado. Depois que o aplicativo concluir a passagem, ele chamará o método FinishCommandList no contexto adiado. Por fim, o aplicativo chama o método ExecuteCommandList no contexto imediato para executar os comandos em cada lista de comandos.

O pseudocódigo a seguir mostra como executar a renderização de várias passões:

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

Observação

O contexto imediato modifica um recurso, que está associado ao contexto imediato como uma RTV (exibição de destino de renderização); por outro lado, cada contexto adiado simplesmente usa o recurso , que está associado ao contexto adiado como uma SRV (exibição de recurso de sombreador). Para obter mais informações sobre contextos imediatos e adiados, consulte Renderização imediata e adiada.

 

Renderização