Интерфейс ID3D12GraphicsCommandList (d3d12.h)
Инкапсулирует список графических команд для отрисовки. Включает API для инструментирования выполнения списка команд, а также для настройки и очистки состояния конвейера.
Наследование
Интерфейс ID3D12GraphicsCommandList наследуется от ID3D12CommandList. ID3D12GraphicsCommandList также имеет следующие типы элементов:
Методы
Интерфейс ID3D12GraphicsCommandList содержит следующие методы.
ID3D12GraphicsCommandList::BeginEvent Не предназначен для непосредственного вызова. Используйте среду выполнения событий PIX для вставки событий в список команд. (ID3D12GraphicsCommandList.BeginEvent) |
ID3D12GraphicsCommandList::BeginQuery Запускает выполнение запроса. (ID3D12GraphicsCommandList.BeginQuery) |
ID3D12GraphicsCommandList::ClearDepthStencilView Очищает ресурс трафарета глубины. (ID3D12GraphicsCommandList.ClearDepthStencilView) |
ID3D12GraphicsCommandList::ClearRenderTargetView Устанавливает для всех элементов в целевом объекте отрисовки одно значение. |
ID3D12GraphicsCommandList::ClearState Сбрасывает состояние прямого списка команд обратно в состояние, в которое он находился при создании списка команд. (ID3D12GraphicsCommandList.ClearState) |
ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat Задает для всех элементов в представлении неупорядоченного доступа указанные значения с плавающей точкой. |
ID3D12GraphicsCommandList::ClearUnorderedAccessViewUint Устанавливает для всех элементов в представлении без упорядоченного доступа (UAV) указанные целочисленные значения. |
ID3D12GraphicsCommandList::Close Указывает, что запись в список команд завершена. (ID3D12GraphicsCommandList.Close) |
ID3D12GraphicsCommandList::CopyBufferRegion Копирует область буфера из одного ресурса в другой. |
ID3D12GraphicsCommandList::CopyResource Копирует все содержимое исходного ресурса в целевой ресурс. |
ID3D12GraphicsCommandList::CopyTextureRegion Этот метод использует GPU для копирования данных текстуры между двумя расположениями. Источник и назначение могут ссылать данные текстуры, расположенные в буферном ресурсе или ресурсе текстуры. |
ID3D12GraphicsCommandList::CopyTiles Копирует плитки из буфера в ресурс с плитками или наоборот. (ID3D12GraphicsCommandList.CopyTiles) |
ID3D12GraphicsCommandList::D iscardResource Отменяет ресурс. |
ID3D12GraphicsCommandList::D ispatch Выполняет шейдер вычислений в группе потоков. |
ID3D12GraphicsCommandList::D rawIndexedInstanced Рисует индексированные экземплярные примитивы. |
ID3D12GraphicsCommandList::D rawInstanced Рисует неиндексированные экземплярные примитивы. |
ID3D12GraphicsCommandList::EndEvent Не предназначен для непосредственного вызова. Используйте среду выполнения событий PIX для вставки событий в список команд. (ID3D12GraphicsCommandList.EndEvent) |
ID3D12GraphicsCommandList::EndQuery Завершает выполняемый запрос. |
ID3D12GraphicsCommandList::ExecuteBundle Выполняет пакет. |
ID3D12GraphicsCommandList::ExecuteIndirect Приложения выполняют непрямые операции рисования и отправки с помощью метода ExecuteIndirect. |
ID3D12GraphicsCommandList::IASetIndexBuffer Задает представление для буфера индекса. |
ID3D12GraphicsCommandList::IASetPrimitiveTopology Привязка сведений о примитивном типе и порядке данных, описывающих входные данные для этапа входного ассемблер. (ID3D12GraphicsCommandList.IASetPrimitiveTopology) |
ID3D12GraphicsCommandList::IASetVertexBuffers Задает дескриптор ЦП для буферов вершин. |
ID3D12GraphicsCommandList::OMSetBlendFactor Задает коэффициент смешивания, который модулирует значения для пиксельного шейдера, целевого объекта отрисовки или и того, и другого. |
ID3D12GraphicsCommandList::OMSetRenderTargets Задает дескриптор ЦП для целевых объектов отрисовки и трафарета глубины. |
ID3D12GraphicsCommandList::OMSetStencilRef Задает эталонное значение для тестов трафарета глубины. |
ID3D12GraphicsCommandList::Reset Сбрасывает список команд в исходное состояние, как если бы новый список команд был только что создан. (ID3D12GraphicsCommandList.Reset) |
ID3D12GraphicsCommandList::ResolveQueryData Извлекает данные из запроса. ResolveQueryData работает со всеми типами кучи (по умолчанию, отправке и обратному чтению). ResolveQueryData работает со всеми типами кучи (по умолчанию, отправке и обратному чтению). . |
ID3D12GraphicsCommandList::ResolveSubresource Скопируйте ресурс из нескольких выборок в ресурс без нескольких выборок. |
ID3D12GraphicsCommandList::ResourceBarrier Уведомляет драйвер о необходимости синхронизации нескольких обращений к ресурсам. (ID3D12GraphicsCommandList.ResourceBarrier) |
ID3D12GraphicsCommandList::RSSetScissorRects Привязывает массив прямоугольников ножницы к этапу растеризатора. |
ID3D12GraphicsCommandList::RSSetViewports Привяжите массив окне просмотра к этапу растеризатора конвейера. (ID3D12GraphicsCommandList.RSSetViewports) |
ID3D12GraphicsCommandList::SetComputeRoot32BitConstant Задает константу в корневой сигнатуре вычислений. |
ID3D12GraphicsCommandList::SetComputeRoot32BitConstants Задает группу констант в корневой сигнатуре вычислений. |
ID3D12GraphicsCommandList::SetComputeRootConstantBufferView Задает дескриптор ЦП для буфера констант в корневой сигнатуре вычислений. |
ID3D12GraphicsCommandList::SetComputeRootDescriptorTable Задает таблицу дескриптора в корневой сигнатуре вычислений. |
ID3D12GraphicsCommandList::SetComputeRootShaderResourceView Задает дескриптор ЦП для ресурса шейдера в корневой сигнатуре вычислений. |
ID3D12GraphicsCommandList::SetComputeRootSignature Задает макет корневой сигнатуры вычислений. |
ID3D12GraphicsCommandList::SetComputeRootUnorderedAccessView Задает дескриптор ЦП для ресурса неупорядоченного доступа и представления в корневой сигнатуре вычислений. |
ID3D12GraphicsCommandList::SetDescriptorHeaps Изменяет текущие привязанные кучи дескрипторов, связанные со списком команд. |
ID3D12GraphicsCommandList::SetGraphicsRoot32BitConstant Задает константу в корневой сигнатуре графического каталога. |
ID3D12GraphicsCommandList::SetGraphicsRoot32BitConstants Задает группу констант в корневой сигнатуре графического каталога. |
ID3D12GraphicsCommandList::SetGraphicsRootConstantBufferView Задает дескриптор ЦП для буфера констант в корневой сигнатуре графического каталога. |
ID3D12GraphicsCommandList::SetGraphicsRootDescriptorTable Задает таблицу дескрипторов в корневую сигнатуру графического каталога. |
ID3D12GraphicsCommandList::SetGraphicsRootShaderResourceView Задает дескриптор ЦП для ресурса шейдера в корневой сигнатуре графического каталога. |
ID3D12GraphicsCommandList::SetGraphicsRootSignature Задает макет корневой подписи графического каталога. |
ID3D12GraphicsCommandList::SetGraphicsRootUnorderedAccessView Задает дескриптор ЦП для ресурса неупорядоченного доступа и представления в корневой сигнатуре графического каталога. |
ID3D12GraphicsCommandList::SetMarker Не предназначен для непосредственного вызова. Используйте среду выполнения событий PIX для вставки событий в список команд. (ID3D12GraphicsCommandList.SetMarker) |
ID3D12GraphicsCommandList::SetPipelineState Задает для всех шейдеров и программ большую часть состояния фиксированной функции конвейера графического модуля обработки (GPU). |
ID3D12GraphicsCommandList::SetPredication Задает предикат отрисовки. |
ID3D12GraphicsCommandList::SOSetTargets Задает представления выходного буфера потока. |
Комментарии
Этот интерфейс является новым для D3D12, инкапсулирующим большую часть функциональных возможностей интерфейса ID3D11CommandList и включая новые функции, описанные в разделе Отрисовка.
Примеры
В примере D3D12nBodyGravity используется ID3D12GraphicsCommandList следующим образом:
Объявите объекты конвейера.
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;
Заполнение списков команд.
// 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());
}
См. пример кода в справочнике по D3D12.
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | d3d12.h |