Interface ID3D12GraphicsCommandList (d3d12.h)

Encapsula uma lista de comandos gráficos para renderização. Inclui APIs para instrumentar a execução da lista de comandos e para definir e limpar o estado do pipeline.

Nota A versão mais recente dessa interface é ID3D12GraphicsCommandList1 introduzida no Atualização do Windows 10 para Criadores. Os aplicativos direcionados Atualização do Windows 10 para Criadores devem usar a interface ID3D12GraphicsCommandList1 em vez de ID3D12GraphicsCommandList.
 

Herança

A interface ID3D12GraphicsCommandList herda de ID3D12CommandList. ID3D12GraphicsCommandList também tem estes tipos de membros:

Métodos

A interface ID3D12GraphicsCommandList tem esses métodos.

 
ID3D12GraphicsCommandList::BeginEvent

Não se destina a ser chamado diretamente.  Use o runtime de eventos PIX para inserir eventos em uma lista de comandos. (ID3D12GraphicsCommandList.BeginEvent)
ID3D12GraphicsCommandList::BeginQuery

Inicia uma consulta em execução. (ID3D12GraphicsCommandList.BeginQuery)
ID3D12GraphicsCommandList::ClearDepthStencilView

Limpa o recurso de estêncil de profundidade. (ID3D12GraphicsCommandList.ClearDepthStencilView)
ID3D12GraphicsCommandList::ClearRenderTargetView

Define todos os elementos em um destino de renderização como um valor.
ID3D12GraphicsCommandList::ClearState

Redefine o estado de uma lista de comandos diretos de volta ao estado em que estava quando a lista de comandos foi criada. (ID3D12GraphicsCommandList.ClearState)
ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat

Define todos os elementos em uma exibição de acesso não ordenado para os valores float especificados.
ID3D12GraphicsCommandList::ClearUnorderedAccessViewUint

Define todos os elementos em uma exibição de acesso não ordenado (UAV) para os valores inteiros especificados.
ID3D12GraphicsCommandList::Close

Indica que a gravação na lista de comandos foi concluída. (ID3D12GraphicsCommandList.Close)
ID3D12GraphicsCommandList::CopyBufferRegion

Copia uma região de um buffer de um recurso para outro.
ID3D12GraphicsCommandList::CopyResource

Copia todo o conteúdo do recurso de origem para o recurso de destino.
ID3D12GraphicsCommandList::CopyTextureRegion

Esse método usa a GPU para copiar dados de textura entre dois locais. Tanto a origem quanto o destino podem referenciar dados de textura localizados em um recurso de buffer ou em um recurso de textura.
ID3D12GraphicsCommandList::CopyTiles

Copia blocos do buffer para o recurso em bloco ou vice-versa. (ID3D12GraphicsCommandList.CopyTiles)
ID3D12GraphicsCommandList::D iscardResource

Descarta um recurso.
ID3D12GraphicsCommandList::D ispatch

Executa um sombreador de computação em um grupo de threads.
ID3D12GraphicsCommandList::D rawIndexedInstanced

Desenha primitivos indexados e instâncias.
ID3D12GraphicsCommandList::D rawInstanced

Desenha primitivos não indexados e instâncias.
ID3D12GraphicsCommandList::EndEvent

Não se destina a ser chamado diretamente.  Use o runtime de eventos PIX para inserir eventos em uma lista de comandos. (ID3D12GraphicsCommandList.EndEvent)
ID3D12GraphicsCommandList::EndQuery

Encerra uma consulta em execução.
ID3D12GraphicsCommandList::ExecuteBundle

Executa um pacote.
ID3D12GraphicsCommandList::ExecuteIndirect

Os aplicativos executam sorteios/expedições indiretos usando o método ExecuteIndirect.
ID3D12GraphicsCommandList::IASetIndexBuffer

Define a exibição do buffer de índice.
ID3D12GraphicsCommandList::IASetPrimitiveTopology

Associe informações sobre o tipo primitivo e a ordem de dados que descreve os dados de entrada para o estágio do assembler de entrada. (ID3D12GraphicsCommandList.IASetPrimitiveTopology)
ID3D12GraphicsCommandList::IASetVertexBuffers

Define um identificador de descritor de CPU para os buffers de vértice.
ID3D12GraphicsCommandList::OMSetBlendFactor

Define o fator de combinação que modula valores para um sombreador de pixel, renderiza o destino ou ambos.
ID3D12GraphicsCommandList::OMSetRenderTargets

Define identificadores de descritor de CPU para os destinos de renderização e o estêncil de profundidade.
ID3D12GraphicsCommandList::OMSetStencilRef

Define o valor de referência para testes de estêncil de profundidade.
ID3D12GraphicsCommandList::Reset

Redefine uma lista de comandos de volta ao estado inicial como se uma nova lista de comandos tivesse sido criada. (ID3D12GraphicsCommandList.Reset)
ID3D12GraphicsCommandList::ResolveQueryData

Extrai dados de uma consulta. ResolveQueryData funciona com todos os tipos de heap (padrão, upload e readback).  ResolveQueryData funciona com todos os tipos de heap (padrão, upload e readback). .
ID3D12GraphicsCommandList::ResolveSubresource

Copie um recurso de várias amostras em um recurso não multi sampled.
ID3D12GraphicsCommandList::ResourceBarrier

Notifica o driver de que ele precisa sincronizar vários acessos aos recursos. (ID3D12GraphicsCommandList.ResourceBarrier)
ID3D12GraphicsCommandList::RSSetScissorRects

Associa uma matriz de retângulos de tesoura ao estágio de rasterizador.
ID3D12GraphicsCommandList::RSSetViewports

Associe uma matriz de visores ao estágio de rasterizador do pipeline. (ID3D12GraphicsCommandList.RSSetViewports)
ID3D12GraphicsCommandList::SetComputeRoot32BitConstant

Define uma constante na assinatura raiz de computação.
ID3D12GraphicsCommandList::SetComputeRoot32BitConstants

Define um grupo de constantes na assinatura raiz de computação.
ID3D12GraphicsCommandList::SetComputeRootConstantBufferView

Define um identificador de descritor de CPU para o buffer constante na assinatura raiz de computação.
ID3D12GraphicsCommandList::SetComputeRootDescriptorTable

Define uma tabela de descritor na assinatura raiz de computação.
ID3D12GraphicsCommandList::SetComputeRootShaderResourceView

Define um identificador de descritor de CPU para o recurso de sombreador na assinatura raiz de computação.
ID3D12GraphicsCommandList::SetComputeRootSignature

Define o layout da assinatura raiz de computação.
ID3D12GraphicsCommandList::SetComputeRootUnorderedAccessView

Define um identificador de descritor de CPU para o recurso unordered-access-view na assinatura raiz de computação.
ID3D12GraphicsCommandList::SetDescriptorHeaps

Altera os heaps de descritor associados no momento associados a uma lista de comandos.
ID3D12GraphicsCommandList::SetGraphicsRoot32BitConstant

Define uma constante na assinatura raiz de gráficos.
ID3D12GraphicsCommandList::SetGraphicsRoot32BitConstants

Define um grupo de constantes na assinatura raiz de gráficos.
ID3D12GraphicsCommandList::SetGraphicsRootConstantBufferView

Define um identificador de descritor de CPU para o buffer constante na assinatura raiz de gráficos.
ID3D12GraphicsCommandList::SetGraphicsRootDescriptorTable

Define uma tabela de descritor na assinatura raiz de gráficos.
ID3D12GraphicsCommandList::SetGraphicsRootShaderResourceView

Define um identificador de descritor de CPU para o recurso de sombreador na assinatura raiz de gráficos.
ID3D12GraphicsCommandList::SetGraphicsRootSignature

Define o layout da assinatura raiz de gráficos.
ID3D12GraphicsCommandList::SetGraphicsRootUnorderedAccessView

Define um identificador de descritor de CPU para o recurso unordered-access-view na assinatura raiz de gráficos.
ID3D12GraphicsCommandList::SetMarker

Não se destina a ser chamado diretamente.  Use o runtime de eventos PIX para inserir eventos em uma lista de comandos. (ID3D12GraphicsCommandList.SetMarker)
ID3D12GraphicsCommandList::SetPipelineState

Define todos os sombreadores e programas a maior parte do estado de função fixa do pipeline de GPU (unidade de processamento gráfico).
ID3D12GraphicsCommandList::SetPredication

Define um predicado de renderização.
ID3D12GraphicsCommandList::SOSetTargets

Define as exibições do buffer de saída de fluxo.

Comentários

Essa interface é nova no D3D12, encapsulando grande parte da funcionalidade da interface ID3D11CommandList e incluindo a nova funcionalidade descrita em Renderização.

Exemplos

O exemplo D3D12nBodyGravity usa ID3D12GraphicsCommandList da seguinte maneira:

Declare os objetos de pipeline.

D3D12_VIEWPORT m_viewport;
D3D12_RECT m_scissorRect;
ComPtr<IDXGISwapChain3> m_swapChain;
ComPtr<ID3D12Device> m_device;
ComPtr<ID3D12Resource> m_renderTargets[FrameCount];
ComPtr<ID3D12CommandAllocator> m_commandAllocator;
ComPtr<ID3D12CommandQueue> m_commandQueue;
ComPtr<ID3D12RootSignature> m_rootSignature;
ComPtr<ID3D12DescriptorHeap> m_rtvHeap;
ComPtr<ID3D12PipelineState> m_pipelineState;
ComPtr<ID3D12GraphicsCommandList> m_commandList;
UINT m_rtvDescriptorSize;

Preenchendo listas de comandos.

// Fill the command list with all the render commands and dependent state.
void D3D12nBodyGravity::PopulateCommandList()
{
    // Command list allocators can only be reset when the associated
    // command lists have finished execution on the GPU; apps should use
    // fences to determine GPU execution progress.
    ThrowIfFailed(m_commandAllocators[m_frameIndex]->Reset());

    // However, when ExecuteCommandList() is called on a particular command
    // list, that command list can then be reset at any time and must be before
    // re-recording.
    ThrowIfFailed(m_commandList->Reset(m_commandAllocators[m_frameIndex].Get(), m_pipelineState.Get()));

    // Set necessary state.
    m_commandList->SetPipelineState(m_pipelineState.Get());
    m_commandList->SetGraphicsRootSignature(m_rootSignature.Get());

    m_commandList->SetGraphicsRootConstantBufferView(RootParameterCB, m_constantBufferGS->GetGPUVirtualAddress() + m_frameIndex * sizeof(ConstantBufferGS));

    ID3D12DescriptorHeap* ppHeaps[] = { m_srvUavHeap.Get() };
    m_commandList->SetDescriptorHeaps(_countof(ppHeaps), ppHeaps);

    m_commandList->IASetVertexBuffers(0, 1, &m_vertexBufferView);
    m_commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_POINTLIST);
    m_commandList->RSSetScissorRects(1, &m_scissorRect);

    // Indicate that the back buffer will be used as a render target.
    m_commandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m_renderTargets[m_frameIndex].Get(), D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET));

    CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle(m_rtvHeap->GetCPUDescriptorHandleForHeapStart(), m_frameIndex, m_rtvDescriptorSize);
    m_commandList->OMSetRenderTargets(1, &rtvHandle, FALSE, nullptr);

    // Record commands.
    const float clearColor[] = { 0.0f, 0.0f, 0.1f, 0.0f };
    m_commandList->ClearRenderTargetView(rtvHandle, clearColor, 0, nullptr);

    // Render the particles.
    float viewportHeight = static_cast<float>(static_cast<UINT>(m_viewport.Height) / m_heightInstances);
    float viewportWidth = static_cast<float>(static_cast<UINT>(m_viewport.Width) / m_widthInstances);
    for (UINT n = 0; n < ThreadCount; n++)
    {
        const UINT srvIndex = n + (m_srvIndex[n] == 0 ? SrvParticlePosVelo0 : SrvParticlePosVelo1);

        D3D12_VIEWPORT viewport;
        viewport.TopLeftX = (n % m_widthInstances) * viewportWidth;
        viewport.TopLeftY = (n / m_widthInstances) * viewportHeight;
        viewport.Width = viewportWidth;
        viewport.Height = viewportHeight;
        viewport.MinDepth = D3D12_MIN_DEPTH;
        viewport.MaxDepth = D3D12_MAX_DEPTH;
        m_commandList->RSSetViewports(1, &viewport);

        CD3DX12_GPU_DESCRIPTOR_HANDLE srvHandle(m_srvUavHeap->GetGPUDescriptorHandleForHeapStart(), srvIndex, m_srvUavDescriptorSize);
        m_commandList->SetGraphicsRootDescriptorTable(RootParameterSRV, srvHandle);

        m_commandList->DrawInstanced(ParticleCount, 1, 0, 0);
    }

    m_commandList->RSSetViewports(1, &m_viewport);

    // Indicate that the back buffer will now be used to present.
    m_commandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m_renderTargets[m_frameIndex].Get(), D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT));

    ThrowIfFailed(m_commandList->Close());
}

Consulte o Código de Exemplo na Referência D3D12.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho d3d12.h

Confira também

Interfaces principais

ID3D12CommandList

ID3D12GraphicsCommandList1