я обнаружил, что в примере образца Microsoft:DirectX12 - ExecuteCommandLists и Present функция
void D3D12HelloTriangle::OnRender()
{
// Record all the commands we need to render the scene into the command list.
PopulateCommandList();
// Execute the command list.
ID3D12CommandList* ppCommandLists[] = { m_commandList.Get() };
m_commandQueue->ExecuteCommandLists(_countof(ppCommandLists), ppCommandLists);
// Present the frame.
ThrowIfFailed(m_swapChain->Present(1, 0));
WaitForPreviousFrame();
}
Как на самом деле работает? ExecuteCommandLists - это вызов асинхронной функции, поэтому это означает, что выполнение кода будет продолжаться, и оно отображает текущую функцию.
Что произойдет после настоящего вызова? Скажем, графический процессор все еще рисует, работает и присутствует. Есть ли синхронный вызов? Он не может представлять буфер, когда gpu все еще рисует. Это верно ? Может ли кто-нибудь объяснить, что здесь происходит?