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.
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 |