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