Interfaz ID3D12GraphicsCommandList (d3d12.h)

Encapsula una lista de comandos gráficos para la representación. Incluye API para instrumentar la ejecución de la lista de comandos y para establecer y borrar el estado de la canalización.

Nota La versión más reciente de esta interfaz es ID3D12GraphicsCommandList1 introducida en el Windows 10 Creators Update. Las aplicaciones destinadas a Windows 10 Creators Update deben usar la interfaz ID3D12GraphicsCommandList1 en lugar de ID3D12GraphicsCommandList.
 

Herencia

La interfaz ID3D12GraphicsCommandList hereda de ID3D12CommandList. ID3D12GraphicsCommandList también tiene estos tipos de miembros:

Métodos

La interfaz ID3D12GraphicsCommandList tiene estos métodos.

 
ID3D12GraphicsCommandList::BeginEvent

No se debe llamar a este método directamente.  Use el entorno de ejecución de eventos PIX para insertar eventos en una lista de comandos. (ID3D12GraphicsCommandList.BeginEvent)
ID3D12GraphicsCommandList::BeginQuery

Inicia una consulta en ejecución. (ID3D12GraphicsCommandList.BeginQuery)
ID3D12GraphicsCommandList::ClearDepthStencilView

Borra el recurso de galería de símbolos de profundidad. (ID3D12GraphicsCommandList.ClearDepthStencilView)
ID3D12GraphicsCommandList::ClearRenderTargetView

Establece todos los elementos de un destino de representación en un valor.
ID3D12GraphicsCommandList::ClearState

Restablece el estado de una lista de comandos directos al estado en el que se encontraba cuando se creó la lista de comandos. (ID3D12GraphicsCommandList.ClearState)
ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat

Establece todos los elementos de una vista de acceso desordenado en los valores float especificados.
ID3D12GraphicsCommandList::ClearUnorderedAccessViewUint

Establece todos los elementos de una vista de acceso sin ordenar (UAV) en los valores enteros especificados.
ID3D12GraphicsCommandList::Close

Indica que la grabación en la lista de comandos ha finalizado. (ID3D12GraphicsCommandList.Close)
ID3D12GraphicsCommandList::CopyBufferRegion

Copia una región de un búfer de un recurso a otro.
ID3D12GraphicsCommandList::CopyResource

Copia todo el contenido del recurso de origen en el recurso de destino.
ID3D12GraphicsCommandList::CopyTextureRegion

Este método usa la GPU para copiar datos de textura entre dos ubicaciones. Tanto el origen como el destino pueden hacer referencia a los datos de textura ubicados en un recurso de búfer o en un recurso de textura.
ID3D12GraphicsCommandList::CopyTiles

Copia iconos del búfer en un recurso en mosaico o viceversa. (ID3D12GraphicsCommandList.CopyTiles)
ID3D12GraphicsCommandList::D iscardResource

Descarta un recurso.
ID3D12GraphicsCommandList::D ispatch

Ejecuta un sombreador de proceso en un grupo de subprocesos.
ID3D12GraphicsCommandList::D rawIndexedInstanced

Dibuja primitivos indexados e instancias.
ID3D12GraphicsCommandList::D rawInstanced

Dibuja primitivos no indexados y con instancias.
ID3D12GraphicsCommandList::EndEvent

No se debe llamar a este método directamente.  Use el entorno de ejecución de eventos PIX para insertar eventos en una lista de comandos. (ID3D12GraphicsCommandList.EndEvent)
ID3D12GraphicsCommandList::EndQuery

Finaliza una consulta en ejecución.
ID3D12GraphicsCommandList::ExecuteBundle

Ejecuta una agrupación.
ID3D12GraphicsCommandList::ExecuteIndirect

Las aplicaciones realizan draws/dispatches indirectos mediante el método ExecuteIndirect.
ID3D12GraphicsCommandList::IASetIndexBuffer

Establece la vista del búfer de índice.
ID3D12GraphicsCommandList::IASetPrimitiveTopology

Enlace información sobre el tipo primitivo y el orden de datos que describe los datos de entrada para la fase del ensamblador de entrada. (ID3D12GraphicsCommandList.IASetPrimitiveTopology)
ID3D12GraphicsCommandList::IASetVertexBuffers

Establece un identificador de descriptor de CPU para los búferes de vértices.
ID3D12GraphicsCommandList::OMSetBlendFactor

Establece el factor de mezcla que modula los valores de un sombreador de píxeles, el destino de representación o ambos.
ID3D12GraphicsCommandList::OMSetRenderTargets

Establece los identificadores de descriptor de CPU para los destinos de representación y la galería de símbolos de profundidad.
ID3D12GraphicsCommandList::OMSetStencilRef

Establece el valor de referencia para las pruebas de galería de símbolos de profundidad.
ID3D12GraphicsCommandList::Reset

Restablece una lista de comandos a su estado inicial como si se acaba de crear una nueva lista de comandos. (ID3D12GraphicsCommandList.Reset)
ID3D12GraphicsCommandList::ResolveQueryData

Extrae datos de una consulta. ResolveQueryData funciona con todos los tipos de montón (valor predeterminado, carga y lectura diferida).  ResolveQueryData funciona con todos los tipos de montón (valor predeterminado, carga y lectura diferida). .
ID3D12GraphicsCommandList::ResolveSubresource

Copie un recurso de ejemplo múltiple en un recurso no muestreado.
ID3D12GraphicsCommandList::ResourceBarrier

Notifica al controlador que necesita sincronizar varios accesos a los recursos. (ID3D12GraphicsCommandList.ResourceBarrier)
ID3D12GraphicsCommandList::RSSetScisorRects

Enlaza una matriz de rectángulos de tijeras a la fase de rasterizador.
ID3D12GraphicsCommandList::RSSetViewports

Enlace una matriz de ventanillas a la fase de rasterizador de la canalización. (ID3D12GraphicsCommandList.RSSetViewports)
ID3D12GraphicsCommandList::SetComputeRoot32BitConstant

Establece una constante en la firma raíz de proceso.
ID3D12GraphicsCommandList::SetComputeRoot32BitConstants

Establece un grupo de constantes en la firma raíz de proceso.
ID3D12GraphicsCommandList::SetComputeRootConstantBufferView

Establece un identificador de descriptor de CPU para el búfer de constantes en la firma raíz de proceso.
ID3D12GraphicsCommandList::SetComputeRootDescriptorTable

Establece una tabla descriptor en la firma raíz de proceso.
ID3D12GraphicsCommandList::SetComputeRootShaderResourceView

Establece un identificador de descriptor de CPU para el recurso de sombreador en la firma raíz de proceso.
ID3D12GraphicsCommandList::SetComputeRootSignature

Establece el diseño de la firma raíz de proceso.
ID3D12GraphicsCommandList::SetComputeRootUnorderedAccessView

Establece un identificador de descriptor de CPU para el recurso unordered-access-view en la firma raíz de proceso.
ID3D12GraphicsCommandList::SetDescriptorHeaps

Cambia los montones de descriptores enlazados actualmente asociados a una lista de comandos.
ID3D12GraphicsCommandList::SetGraphicsRoot32BitConstant

Establece una constante en la firma raíz de gráficos.
ID3D12GraphicsCommandList::SetGraphicsRoot32BitConstants

Establece un grupo de constantes en la firma raíz de gráficos.
ID3D12GraphicsCommandList::SetGraphicsRootConstantBufferView

Establece un identificador de descriptor de CPU para el búfer de constantes en la firma raíz de gráficos.
ID3D12GraphicsCommandList::SetGraphicsRootDescriptorTable

Establece una tabla descriptor en la firma raíz de gráficos.
ID3D12GraphicsCommandList::SetGraphicsRootShaderResourceView

Establece un identificador de descriptor de CPU para el recurso de sombreador en la firma raíz de gráficos.
ID3D12GraphicsCommandList::SetGraphicsRootSignature

Establece el diseño de la firma raíz de gráficos.
ID3D12GraphicsCommandList::SetGraphicsRootUnorderedAccessView

Establece un identificador de descriptor de CPU para el recurso unordered-access-view en la firma raíz de gráficos.
ID3D12GraphicsCommandList::SetMarker

No se debe llamar a este método directamente.  Use el entorno de ejecución de eventos PIX para insertar eventos en una lista de comandos. (ID3D12GraphicsCommandList.SetMarker)
ID3D12GraphicsCommandList::SetPipelineState

Establece todos los sombreadores y programas la mayor parte del estado de función fija de la canalización de la unidad de procesamiento gráfico (GPU).
ID3D12GraphicsCommandList::SetPredication

Establece un predicado de representación.
ID3D12GraphicsCommandList::SOSetTargets

Establece las vistas del búfer de salida de flujo.

Comentarios

Esta interfaz es nueva en D3D12, encapsulando gran parte de la funcionalidad de la interfaz ID3D11CommandList e incluye la nueva funcionalidad descrita en Representación.

Ejemplos

El ejemplo D3D12nBodyGravity usa ID3D12GraphicsCommandList de la siguiente manera:

Declare los objetos de canalización.

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;

Rellenar 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 el código de ejemplo en la referencia D3D12.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado d3d12.h

Consulte también

Interfaces principales

ID3D12CommandList

ID3D12GraphicsCommandList1