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. È necessario creare un elenco di comandi da un contesto posticipato, che contiene le 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 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 indica che lo stato del contesto del dispositivo viene ripristinato alla condizione dell'elenco di pre-comandi al termine della registrazione, FALSE indica che lo stato non viene modificato dopo la registrazione. Ciò significa che il contesto del dispositivo rifletterà le modifiche dello stato contenute nell'elenco di comandi.

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

Elenco comandi

Come usare Direct3D 11