Compartir a través de


Cómo: Grabar una lista de comandos

Una lista de comandos es una lista grabada de comandos de representación. En este tema se muestra cómo crear y grabar una lista de comandos. Use una lista de comandos para grabar comandos de representación y reproducirlos más adelante. Una lista de comandos es conveniente para dividir las tareas de representación entre subprocesos.

Para registrar una lista de comandos

  1. Se debe crear una lista de comandos a partir de un contexto diferido, que contiene acciones de representación y estado del dispositivo. Dado un dispositivo, cree un contexto diferido llamando a ID3D11Device::CreateDeferredContext.

    HRESULT hr;
    ID3D11DeviceContext* pDeferredContext = NULL;
    
    hr = g_pd3dDevice->CreateDeferredContext(0, &pDeferredContext);
    
  2. Use el contexto diferido para representar.

    float ClearColor[4] = { 0.0f, 0.125f, 0.3f, 1.0f };
    pDeferredContext->ClearRenderTargetView( g_pRenderTargetView, ClearColor );
    
    // Add additional rendering commands
    ...
    

    En este ejemplo sencillo se borra un destino de representación, pero podría agregar comandos de representación adicionales.

  3. Cree o registre una lista de comandos llamando a ID3D11DeviceContext::FinishCommandList y pasando un puntero a una interfaz ID3D11CommandList sin inicializar.

    ID3D11CommandList* pd3dCommandList = NULL;
    HRESULT hr;
    hr = pDeferredContext->FinishCommandList(FALSE, &pd3dCommandList);
    

    Cuando el método devuelve, se crea una lista de comandos que contiene todos los comandos de representación y se devuelve una interfaz a la aplicación.

    El parámetro booleano indica al runtime qué hacer con el estado de canalización en el contexto diferido. TRUE significa restaurar el estado del contexto del dispositivo a su condición de lista de comandos previos cuando se completa la grabación, FALSE significa que no cambia el estado después de la grabación. Esto significa que el contexto del dispositivo reflejará los cambios de estado contenidos en la lista de comandos.

Para ver un ejemplo para reproducir una lista de comandos, vea Cómo: Reproducir una lista de comandos.

Lista de comandos

Cómo usar Direct3D 11