gpt4 book ai didi

directx-12 - DirectX12 - ExecuteCommandLists 和 Present 函数

转载 作者:行者123 更新时间:2023-12-05 04:15:05 30 4
gpt4 key购买 nike

我在微软示例中发现:

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 函数。

Present 调用后会发生什么?比方说,GPU 仍在绘图、工作并调用 present。现在是同步调用吗?当 gpu 仍在绘图时,它无法呈现缓冲区。那是对的吗 ?有人可以解释这里发生了什么吗?

最佳答案

Present 也是一个异步命令,它告诉 GPU 从交换链中的下一个缓冲区开始扫描(显示)。您不必担心 GPU 在“翻转”发生之前没有完成所有先前发出的工作(在图形命令队列上)。

关于directx-12 - DirectX12 - ExecuteCommandLists 和 Present 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33416715/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com