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