我在 Microsoft 示例示例中发现:
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 是一个异步函数调用,因此这意味着代码将继续执行并命中 Present 函数。
当前通话后会发生什么?比方说,GPU 仍在绘图,工作和存在被调用。现在是同步呼叫吗?当 gpu 仍在绘制时,它不能显示缓冲区。那是对的吗 ?有人可以解释这里发生了什么吗?