Antarmuka ID3D12GraphicsCommandList (d3d12.h)
Merangkum daftar perintah grafis untuk penyajian. Termasuk API untuk melengkapi eksekusi daftar perintah, dan untuk mengatur dan menghapus status alur.
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 |