Share via


Como registrar uma lista de comandos

Uma lista de comandos é uma lista registrada de comandos de renderização. Este tópico mostra como criar e gravar uma lista de comandos. Use uma lista de comandos para gravar comandos de renderização e reproduzi-los mais tarde. Uma lista de comandos é conveniente para dividir tarefas de renderização entre threads.

Para registrar uma lista de comandos

  1. Uma lista de comandos deve ser criada a partir de um contexto adiado, que contém o estado do dispositivo e as ações de renderização. Dado um dispositivo, crie um contexto adiado chamando ID3D11Device::CreateDeferredContext.

    HRESULT hr;
    ID3D11DeviceContext* pDeferredContext = NULL;
    
    hr = g_pd3dDevice->CreateDeferredContext(0, &pDeferredContext);
    
  2. Use o contexto adiado para renderizar.

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

    Este exemplo simples limpa um destino de renderização, mas você pode adicionar comandos de renderização adicionais.

  3. Crie/registre uma lista de comandos chamando ID3D11DeviceContext::FinishCommandList e passando um ponteiro para uma interface ID3D11CommandList não inicializada.

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

    Quando o método retorna, uma lista de comandos é criada contendo todos os comandos de renderização e uma interface é retornada ao aplicativo.

    O parâmetro booliano informa ao runtime o que fazer com o estado do pipeline no contexto adiado. TRUE significa restaurar o estado do contexto do dispositivo para sua condição de lista de pré-comando quando a gravação for concluída, false significa que não altere o estado após a gravação. Isso significa que o contexto do dispositivo refletirá as alterações de estado contidas na lista de comandos.

Para ver um exemplo para reproduzir uma lista de comandos, consulte Como reproduzir uma lista de comandos.

Lista de comandos

Como usar o Direct3D 11