Antarmuka ID3D12GraphicsCommandList (d3d12.h)

Merangkum daftar perintah grafis untuk penyajian. Termasuk API untuk melengkapi eksekusi daftar perintah, dan untuk mengatur dan menghapus status alur.

Catatan Versi terbaru antarmuka ini adalah ID3D12GraphicsCommandList1 yang diperkenalkan dalam Windows 10 Creators Update. Aplikasi yang menargetkan Windows 10 Creators Update harus menggunakan antarmuka ID3D12GraphicsCommandList1 alih-alih ID3D12GraphicsCommandList.
 

Warisan

Antarmuka ID3D12GraphicsCommandList mewarisi dari ID3D12CommandList. ID3D12GraphicsCommandList juga memiliki jenis anggota berikut:

Metode

Antarmuka ID3D12GraphicsCommandList memiliki metode ini.

 
ID3D12GraphicsCommandList::BeginEvent

Tidak dimaksudkan untuk dipanggil secara langsung.  Gunakan runtime peristiwa PIX untuk menyisipkan peristiwa ke dalam daftar perintah. (ID3D12GraphicsCommandList.BeginEvent)
ID3D12GraphicsCommandList::BeginQuery

Memulai kueri yang berjalan. (ID3D12GraphicsCommandList.BeginQuery)
ID3D12GraphicsCommandList::ClearDepthStencilView

Menghapus sumber daya stensil kedalaman. (ID3D12GraphicsCommandList.ClearDepthStencilView)
ID3D12GraphicsCommandList::ClearRenderTargetView

Mengatur semua elemen dalam target render ke satu nilai.
ID3D12GraphicsCommandList::ClearState

Mereset status daftar perintah langsung kembali ke status saat daftar perintah dibuat. (ID3D12GraphicsCommandList.ClearState)
ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat

Mengatur semua elemen dalam tampilan akses yang tidak diurutkan ke nilai float yang ditentukan.
ID3D12GraphicsCommandList::ClearUnorderedAccessViewUint

Mengatur semua elemen dalam tampilan akses tidak berurut (UAV) ke nilai bilangan bulat yang ditentukan.
ID3D12GraphicsCommandList::Close

Menunjukkan bahwa perekaman ke daftar perintah telah selesai. (ID3D12GraphicsCommandList.Close)
ID3D12GraphicsCommandList::CopyBufferRegion

Menyalin wilayah buffer dari satu sumber daya ke sumber daya lainnya.
ID3D12GraphicsCommandList::CopyResource

Menyalin seluruh konten sumber daya sumber ke sumber daya tujuan.
ID3D12GraphicsCommandList::CopyTextureRegion

Metode ini menggunakan GPU untuk menyalin data tekstur di antara dua lokasi. Sumber dan tujuan dapat mereferensikan data tekstur yang terletak di dalam sumber daya buffer atau sumber daya tekstur.
ID3D12GraphicsCommandList::CopyTiles

Menyalin petak peta dari buffer ke sumber daya ubin atau sebaliknya. (ID3D12GraphicsCommandList.CopyTiles)
ID3D12GraphicsCommandList::D iscardResource

Membuang sumber daya.
ID3D12GraphicsCommandList::D ispatch

Menjalankan shader komputasi pada grup utas.
ID3D12GraphicsCommandList::D rawIndexedInstanced

Menggambar primitif yang diindeks dan diindeks.
ID3D12GraphicsCommandList::D rawInstanced

Menggambar primitif yang tidak diindeks dan diindeks.
ID3D12GraphicsCommandList::EndEvent

Tidak dimaksudkan untuk dipanggil secara langsung.  Gunakan runtime peristiwa PIX untuk menyisipkan peristiwa ke dalam daftar perintah. (ID3D12GraphicsCommandList.EndEvent)
ID3D12GraphicsCommandList::EndQuery

Mengakhiri kueri yang sedang berjalan.
ID3D12GraphicsCommandList::ExecuteBundle

Menjalankan bundel.
ID3D12GraphicsCommandList::ExecuteIndirect

Aplikasi melakukan gambar/pengiriman tidak langsung menggunakan metode ExecuteIndirect.
ID3D12GraphicsCommandList::IASetIndexBuffer

Mengatur tampilan untuk buffer indeks.
ID3D12GraphicsCommandList::IASetPrimitiveTopology

Ikat informasi tentang jenis primitif, dan urutan data yang menjelaskan data input untuk tahap perakit input. (ID3D12GraphicsCommandList.IASetPrimitiveTopology)
ID3D12GraphicsCommandList::IASetVertexBuffers

Mengatur handel deskriptor CPU untuk buffer vertex.
ID3D12GraphicsCommandList::OMSetBlendFactor

Mengatur faktor campuran yang memodulasi nilai untuk shader piksel, merender target, atau keduanya.
ID3D12GraphicsCommandList::OMSetRenderTargets

Mengatur handel deskriptor CPU untuk target render dan stensil kedalaman.
ID3D12GraphicsCommandList::OMSetStencilRef

Mengatur nilai referensi untuk pengujian stensil kedalaman.
ID3D12GraphicsCommandList::Reset

Mereset daftar perintah kembali ke status awal seolah-olah daftar perintah baru baru saja dibuat. (ID3D12GraphicsCommandList.Reset)
ID3D12GraphicsCommandList::ResolveQueryData

Mengekstrak data dari kueri. ResolveQueryData berfungsi dengan semua jenis heap (default, upload, dan readback).  ResolveQueryData berfungsi dengan semua jenis heap (default, upload, dan readback). .
ID3D12GraphicsCommandList::ResolveSubresource

Salin sumber daya multi-sampel ke sumber daya non-multi-sampel.
ID3D12GraphicsCommandList::ResourceBarrier

Memberi tahu driver bahwa ia perlu menyinkronkan beberapa akses ke sumber daya. (ID3D12GraphicsCommandList.ResourceBarrier)
ID3D12GraphicsCommandList::RSSetScissorRects

Mengikat array persegi panjang gunting ke tahap rasterizer.
ID3D12GraphicsCommandList::RSSetViewports

Mengikat array viewports ke tahap rasterizer alur. (ID3D12GraphicsCommandList.RSSetViewports)
ID3D12GraphicsCommandList::SetComputeRoot32BitConstant

Mengatur konstanta dalam tanda tangan akar komputasi.
ID3D12GraphicsCommandList::SetComputeRoot32BitConstants

Mengatur sekelompok konstanta dalam tanda tangan akar komputasi.
ID3D12GraphicsCommandList::SetComputeRootConstantBufferView

Mengatur handel deskriptor CPU untuk buffer konstanta dalam tanda tangan akar komputasi.
ID3D12GraphicsCommandList::SetComputeRootDescriptorTable

Mengatur tabel deskriptor ke dalam tanda tangan akar komputasi.
ID3D12GraphicsCommandList::SetComputeRootShaderResourceView

Mengatur handel deskriptor CPU untuk sumber daya shader di tanda tangan akar komputasi.
ID3D12GraphicsCommandList::SetComputeRootSignature

Mengatur tata letak tanda tangan akar komputasi.
ID3D12GraphicsCommandList::SetComputeRootUnorderedAccessView

Mengatur handel deskriptor CPU untuk sumber daya unordered-access-view di tanda tangan akar komputasi.
ID3D12GraphicsCommandList::SetDescriptorHeaps

Mengubah tumpukan deskriptor yang saat ini terikat yang terkait dengan daftar perintah.
ID3D12GraphicsCommandList::SetGraphicsRoot32BitConstant

Mengatur konstanta dalam tanda tangan akar grafis.
ID3D12GraphicsCommandList::SetGraphicsRoot32BitConstants

Mengatur sekelompok konstanta dalam tanda tangan akar grafis.
ID3D12GraphicsCommandList::SetGraphicsRootConstantBufferView

Mengatur handel deskriptor CPU untuk buffer konstanta dalam tanda tangan akar grafis.
ID3D12GraphicsCommandList::SetGraphicsRootDescriptorTable

Mengatur tabel deskriptor ke dalam tanda tangan akar grafis.
ID3D12GraphicsCommandList::SetGraphicsRootShaderResourceView

Mengatur handel deskriptor CPU untuk sumber daya shader dalam tanda tangan akar grafis.
ID3D12GraphicsCommandList::SetGraphicsRootSignature

Mengatur tata letak tanda tangan akar grafis.
ID3D12GraphicsCommandList::SetGraphicsRootUnorderedAccessView

Mengatur handel deskriptor CPU untuk sumber daya tampilan akses yang tidak diurutkan dalam tanda tangan akar grafis.
ID3D12GraphicsCommandList::SetMarker

Tidak dimaksudkan untuk dipanggil secara langsung.  Gunakan runtime peristiwa PIX untuk menyisipkan peristiwa ke dalam daftar perintah. (ID3D12GraphicsCommandList.SetMarker)
ID3D12GraphicsCommandList::SetPipelineState

Mengatur semua shader dan program sebagian besar status fungsi tetap dari alur unit pemrosesan grafis (GPU).
ID3D12GraphicsCommandList::SetPredication

Mengatur predikat penyajian.
ID3D12GraphicsCommandList::SOSetTargets

Mengatur tampilan buffer output aliran.

Keterangan

Antarmuka ini baru untuk D3D12, merangkum banyak fungsionalitas antarmuka ID3D11CommandList , dan termasuk fungsionalitas baru yang dijelaskan dalam Rendering.

Contoh

Sampel D3D12nBodyGravity menggunakan ID3D12GraphicsCommandList sebagai berikut:

Deklarasikan objek alur.

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;

Mengisi daftar perintah.

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

Lihat Contoh Kode dalam Referensi D3D12.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d3d12.h

Lihat juga

Antarmuka Core

ID3D12CommandList

ID3D12GraphicsCommandList1