当帧开始时,我会进行逻辑更新和渲染。在我的渲染代码中,我做一些常规的事情。我设置一些状态、缓冲区、纹理,并最终调用Draw方法。
在帧结束时,我调用 present 来显示渲染的帧。
m_deviceContext->Draw(
nbVertices,
0);
在帧结束时,我调用 present 来显示渲染的帧。
// Present the back buffer to the screen since rendering is complete.
if(m_vsync_enabled)
{
// Lock to screen refresh rate.
m_swapChain->Present(1, 0);
}
else
{
// Present as fast as possible.
m_swapChain->Present(0, 0);
}
一般的事情。现在,当我调用Draw时,根据MSDN的说法:
Draw向渲染管线提交工作。
这是不是意味着数据被发送到GPU,而主线程(调用Draw的那个)则继续执行?还是它会等待渲染完成?
在我看来,只有Present函数应该让主线程等待渲染完成。