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.
Tópicos relacionados