Partager via


Guide pratique pour enregistrer une liste de commandes

Une liste de commandes est une liste enregistrée de commandes de rendu. Cette rubrique montre comment créer et enregistrer une liste de commandes. Utilisez une liste de commandes pour enregistrer les commandes de rendu et les lire ultérieurement. Une liste de commandes est pratique pour fractionner les tâches de rendu entre les threads.

Pour enregistrer une liste de commandes

  1. Une liste de commandes doit être créée à partir d’un contexte différé, qui contient l’état de l’appareil et les actions de rendu. Pour un appareil, créez un contexte différé en appelant ID3D11Device::CreateDeferredContext.

    HRESULT hr;
    ID3D11DeviceContext* pDeferredContext = NULL;
    
    hr = g_pd3dDevice->CreateDeferredContext(0, &pDeferredContext);
    
  2. Utilisez le contexte différé pour le rendu.

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

    Cet exemple simple efface une cible de rendu, mais vous pouvez ajouter des commandes de rendu supplémentaires.

  3. Créez/enregistrez une liste de commandes en appelant ID3D11DeviceContext::FinishCommandList et en passant un pointeur vers une interface ID3D11CommandList non initialisée.

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

    Lorsque la méthode retourne, une liste de commandes est créée contenant toutes les commandes de rendu et une interface est retournée à l’application.

    Le paramètre booléen indique au runtime ce qu’il doit faire avec l’état du pipeline dans le contexte différé. TRUE signifie restaurer l’état du contexte de l’appareil à sa condition de liste de pré-commandes lorsque l’enregistrement est terminé, FALSE signifie ne pas modifier l’état après l’enregistrement. Cela signifie que le contexte de l’appareil reflète les modifications d’état contenues dans la liste des commandes.

Pour voir un exemple de lecture d’une liste de commandes, consultez Guide pratique pour lire une liste de commandes.

Liste de commandes

Utilisation de Direct3D 11