Como: Gravar uma lista de comandos
Uma lista de comandos é uma lista gravada de comandos de renderização. Este tópico mostra como criar e gravar uma lista de comandos . Utilize uma lista de comandos para gravar comandos de renderização e jogá-los mais tarde. Uma lista de comandos é conveniente para dividir tarefas de renderização entre threads.
Para gravar uma lista de comandos
Uma lista de comandos deve ser criada a partir de um contexto adiado, que contém o estado do dispositivo e 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);
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.
Crie ou grave uma lista de comandos chamando ID3D11DeviceContext::FinishCommandList e passando um ponteiro para uma interface não inicializada ID3D11CommandList.
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 boolean informa ao tempo de execução 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é-comandos quando a gravação é concluída, FALSE significa não alterar 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 de reprodução de uma lista de comandos, consulte Como reproduzir uma lista de comandos.
Tópicos relacionados