Condividi tramite


Procedura: Registrare un elenco di comandi

Un elenco di comandi è un elenco registrato di comandi di rendering. In questo argomento viene illustrato come creare e registrare un elenco di comandi . Usare un elenco di comandi per registrare i comandi di rendering e riprodurli in un secondo momento. Un elenco di comandi è utile per suddividere le attività di rendering tra thread.

Per registrare un elenco di comandi

  1. Un elenco di comandi deve essere creato da un contesto posticipato, che contiene azioni di rendering e stato del dispositivo. Dato un dispositivo, creare un contesto posticipato chiamando ID3D11Device::CreateDeferredContext.

    HRESULT hr;
    ID3D11DeviceContext* pDeferredContext = NULL;
    
    hr = g_pd3dDevice->CreateDeferredContext(0, &pDeferredContext);
    
  2. Usare il contesto posticipato per il rendering.

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

    Questo semplice esempio cancella una destinazione di rendering, ma è possibile aggiungere altri comandi di rendering.

  3. Creare/registrare un elenco di comandi chiamando ID3D11DeviceContext::FinishCommandList e passando un puntatore a un'interfaccia ID3D11CommandList non inizializzata.

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

    Quando il metodo termina, viene creato un elenco di comandi contenente tutti i comandi di rendering e viene restituita un'interfaccia all'applicazione.

    Il parametro booleano indica al runtime cosa fare con lo stato della pipeline nel contesto posticipato. TRUE significa ripristinare lo stato del contesto del dispositivo alla condizione dell'elenco di pre-comandi al termine della registrazione, false significa non modificare lo stato dopo la registrazione. Ciò significa che il contesto del dispositivo rifletterà le modifiche di stato contenute nell'elenco di comandi.

Per un esempio di riproduzione di un elenco di comandi, vedere Procedura: Riprodurre un elenco di comandi.

elenco comandi

Come usare Direct3D 11