Compartir a través de


representación de Multiple-Pass

La representación de varios pasos es un proceso en el que una aplicación recorre su gráfico de escenas varias veces para generar una salida que se representa en la pantalla. La representación de varios pasos mejora el rendimiento porque divide escenas complejas en tareas que se pueden ejecutar simultáneamente.

Para realizar la representación de varios pasos, cree un contexto diferido y una lista de comandos para cada paso adicional. Mientras la aplicación recorre el gráfico de escenas, registra comandos (por ejemplo, comandos de representación como Draw) en un contexto diferido. Una vez que la aplicación finaliza el recorrido, llama al método FinishCommandList en el contexto diferido. Por último, la aplicación llama al método ExecuteCommandList en el contexto inmediato para ejecutar los comandos en cada lista de comandos.

El pseudocódigo siguiente muestra cómo realizar la representación de varias pasos:

{
 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

El contexto inmediato modifica un recurso, que está enlazado al contexto inmediato como una vista de destino de representación (RTV); Por el contrario, cada contexto diferido simplemente usa el recurso , que está enlazado al contexto diferido como una vista de recursos del sombreador (SRV). Para obtener más información sobre los contextos inmediatos y diferidos, vea Representación inmediata y diferida.

 

Representación