ID3D12GraphicsCommandList-Schnittstelle (d3d12.h)

Kapselt eine Liste von Grafikbefehlen zum Rendern. Enthält APIs zum Instrumentieren der Befehlslistenausführung sowie zum Festlegen und Löschen des Pipelinestatus.

Hinweis Die neueste Version dieser Schnittstelle ist ID3D12GraphicsCommandList1, die im Windows 10 Creators Update eingeführt wurde. Anwendungen, die auf Windows 10 Creators Update abzielen, sollten die ID3D12GraphicsCommandList1-Schnittstelle anstelle von ID3D12GraphicsCommandList verwenden.
 

Vererbung

Die ID3D12GraphicsCommandList-Schnittstelle erbt von ID3D12CommandList. ID3D12GraphicsCommandList verfügt auch über die folgenden Membertypen:

Methoden

Die ID3D12GraphicsCommandList-Schnittstelle verfügt über diese Methoden.

 
ID3D12GraphicsCommandList::BeginEvent

Nicht dafür vorgesehen, direkt aufgerufen zu werden.  Verwenden Sie die PIX-Ereignislaufzeit, um Ereignisse in eine Befehlsliste einzufügen. (ID3D12GraphicsCommandList.BeginEvent)
ID3D12GraphicsCommandList::BeginQuery

Startet eine Abfrage, die ausgeführt wird. (ID3D12GraphicsCommandList.BeginQuery)
ID3D12GraphicsCommandList::ClearDepthStencilView

Löscht die Tiefenschablonenressource. (ID3D12GraphicsCommandList.ClearDepthStencilView)
ID3D12GraphicsCommandList::ClearRenderTargetView

Legt alle Elemente in einem Renderziel auf einen Wert fest.
ID3D12GraphicsCommandList::ClearState

Setzt den Status einer direkten Befehlsliste wieder auf den Zustand zurück, in dem sie sich beim Erstellen der Befehlsliste befand. (ID3D12GraphicsCommandList.ClearState)
ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat

Legt alle Elemente in einer ungeordneten Zugriffsansicht auf die angegebenen Floatwerte fest.
ID3D12GraphicsCommandList::ClearUnorderedAccessViewUint

Legt alle Elemente in einer ungeordneten Zugriffssicht (UAV) auf die angegebenen ganzzahligen Werte fest.
ID3D12GraphicsCommandList::Close

Gibt an, dass die Aufzeichnung in der Befehlsliste abgeschlossen wurde. (ID3D12GraphicsCommandList.Close)
ID3D12GraphicsCommandList::CopyBufferRegion

Kopiert eine Region eines Puffers von einer Ressource in eine andere.
ID3D12GraphicsCommandList::CopyResource

Kopiert den gesamten Inhalt der Quellressource in die Zielressource.
ID3D12GraphicsCommandList::CopyTextureRegion

Diese Methode verwendet die GPU, um Texturdaten zwischen zwei Speicherorten zu kopieren. Sowohl die Quelle als auch das Ziel können auf Texturdaten verweisen, die sich in einer Pufferressource oder einer Texturressource befinden.
ID3D12GraphicsCommandList::CopyTiles

Kopiert Kacheln aus dem Puffer in eine gekachelte Ressource oder umgekehrt. (ID3D12GraphicsCommandList.CopyTiles)
ID3D12GraphicsCommandList::D iscardResource

Verwirft eine Ressource.
ID3D12GraphicsCommandList::D ispatch

Führt einen Compute-Shader für eine Threadgruppe aus.
ID3D12GraphicsCommandList::D rawIndexedInstanced

Zeichnet indizierte, instanzierte Grundtypen.
ID3D12GraphicsCommandList::D rawInstanced

Zeichnet nicht indizierte, instanzierte Grundtypen.
ID3D12GraphicsCommandList::EndEvent

Nicht dafür vorgesehen, direkt aufgerufen zu werden.  Verwenden Sie die PIX-Ereignislaufzeit, um Ereignisse in eine Befehlsliste einzufügen. (ID3D12GraphicsCommandList.EndEvent)
ID3D12GraphicsCommandList::EndQuery

Beendet eine ausgeführte Abfrage.
ID3D12GraphicsCommandList::ExecuteBundle

Führt ein Bundle aus.
ID3D12GraphicsCommandList::ExecuteIndirect

Apps führen indirekte Ziehungen/Versendungen mithilfe der ExecuteIndirect-Methode durch.
ID3D12GraphicsCommandList::IASetIndexBuffer

Legt die Ansicht für den Indexpuffer fest.
ID3D12GraphicsCommandList::IASetPrimitiveTopology

Binden Sie Informationen über den primitiven Typ und die Datenreihenfolge, die Eingabedaten für die Eingabeassemierungsstufe beschreibt. (ID3D12GraphicsCommandList.IASetPrimitiveTopology)
ID3D12GraphicsCommandList::IASetVertexBuffers

Legt ein CPU-Deskriptorhandle für die Vertexpuffer fest.
ID3D12GraphicsCommandList::OMSetBlendFactor

Legt den Mischfaktor fest, der Werte für einen Pixel-Shader, ein Renderziel oder beides moduliert.
ID3D12GraphicsCommandList::OMSetRenderTargets

Legt CPU-Deskriptorhandles für die Renderziele und die Tiefenschablone fest.
ID3D12GraphicsCommandList::OMSetStencilRef

Legt den Referenzwert für Tiefenschablonentests fest.
ID3D12GraphicsCommandList::Reset

Setzt eine Befehlsliste wieder auf den ursprünglichen Zustand zurück, als ob gerade eine neue Befehlsliste erstellt wurde. (ID3D12GraphicsCommandList.Reset)
ID3D12GraphicsCommandList::ResolveQueryData

Extrahiert Daten aus einer Abfrage. ResolveQueryData funktioniert mit allen Heaptypen (Standard, Upload und Readback).  ResolveQueryData funktioniert mit allen Heaptypen (Standard, Upload und Readback). .
ID3D12GraphicsCommandList::ResolveSubresource

Kopieren Sie eine Ressource mit mehreren Stichproben in eine Ressource, die nicht mit mehreren Stichproben verwendet wird.
ID3D12GraphicsCommandList::ResourceBarrier

Benachrichtigt den Treiber, dass er mehrere Zugriffe auf Ressourcen synchronisieren muss. (ID3D12GraphicsCommandList.ResourceBarrier)
ID3D12GraphicsCommandList::RSSetScissorRects

Bindet ein Array von Scherenrechtecken an die Rasterungsphase.
ID3D12GraphicsCommandList::RSSetViewports

Binden Sie ein Array von Viewports an die Rasterizerphase der Pipeline. (ID3D12GraphicsCommandList.RSSetViewports)
ID3D12GraphicsCommandList::SetComputeRoot32BitConstant

Legt eine Konstante in der Computestammsignatur fest.
ID3D12GraphicsCommandList::SetComputeRoot32BitConstants

Legt eine Gruppe von Konstanten in der Computestammsignatur fest.
ID3D12GraphicsCommandList::SetComputeRootConstantBufferView

Legt ein CPU-Deskriptorhandle für den Konstantenpuffer in der Computestammsignatur fest.
ID3D12GraphicsCommandList::SetComputeRootDescriptorTable

Legt eine Deskriptortabelle in der Computestammsignatur fest.
ID3D12GraphicsCommandList::SetComputeRootShaderResourceView

Legt ein CPU-Deskriptorhandle für die Shaderressource in der Computestammsignatur fest.
ID3D12GraphicsCommandList::SetComputeRootSignature

Legt das Layout der Computestammsignatur fest.
ID3D12GraphicsCommandList::SetComputeRootUnorderedAccessView

Legt ein CPU-Deskriptorhandle für die Ressource unordered-access-view in der Computestammsignatur fest.
ID3D12GraphicsCommandList::SetDescriptorHeaps

Ändert die aktuell gebundenen Deskriptorheaps, die einer Befehlsliste zugeordnet sind.
ID3D12GraphicsCommandList::SetGraphicsRoot32BitConstant

Legt eine Konstante in der Grafikstammsignatur fest.
ID3D12GraphicsCommandList::SetGraphicsRoot32BitConstants

Legt eine Gruppe von Konstanten in der Grafikstammsignatur fest.
ID3D12GraphicsCommandList::SetGraphicsRootConstantBufferView

Legt ein CPU-Deskriptorhandle für den Konstantenpuffer in der Grafikstammsignatur fest.
ID3D12GraphicsCommandList::SetGraphicsRootDescriptorTable

Legt eine Deskriptortabelle in der Grafikstammsignatur fest.
ID3D12GraphicsCommandList::SetGraphicsRootShaderResourceView

Legt ein CPU-Deskriptorhandle für die Shaderressource in der Grafikstammsignatur fest.
ID3D12GraphicsCommandList::SetGraphicsRootSignature

Legt das Layout der Grafikstammsignatur fest.
ID3D12GraphicsCommandList::SetGraphicsRootUnorderedAccessView

Legt ein CPU-Deskriptorhandle für die Ressource unordered-access-view in der Grafikstammsignatur fest.
ID3D12GraphicsCommandList::SetMarker

Nicht dafür vorgesehen, direkt aufgerufen zu werden.  Verwenden Sie die PIX-Ereignislaufzeit, um Ereignisse in eine Befehlsliste einzufügen. (ID3D12GraphicsCommandList.SetMarker)
ID3D12GraphicsCommandList::SetPipelineState

Legt alle Shader und Programme fest, die den meisten Zustand fester Funktionen der GPU-Pipeline (Graphics Processing Unit) aufweisen.
ID3D12GraphicsCommandList::SetPredication

Legt ein Rendering-Prädikat fest.
ID3D12GraphicsCommandList::SOSetTargets

Legt die Ansichten des Streamausgabepuffers fest.

Hinweise

Diese Schnittstelle ist neu in D3D12. Sie kapselt einen Großteil der Funktionalität der ID3D11CommandList-Schnittstelle und schließt die neue Funktionalität ein, die unter Rendering beschrieben wird.

Beispiele

Das D3D12nBodyGravity-Beispiel verwendet ID3D12GraphicsCommandList wie folgt:

Deklarieren Sie die Pipelineobjekte.

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;

Auffüllen von Befehlslisten.

// 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());
}

Weitere Informationen finden Sie im Beispielcode in der D3D12-Referenz.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d3d12.h

Weitere Informationen

Kernschnittstellen

ID3D12CommandList

ID3D12GraphicsCommandList1