帧开始时,我做了逻辑更新并在此之后渲染。 在我的渲染代码中,我会做一些常用的东西。我设置了几个状态,缓冲区,纹理,并通过调用Draw来结束。在DirectX中渲染11
m_deviceContext->Draw(
nbVertices,
0);
在框架端我称本显示渲染帧。
// 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和主线程(称为绘制)继续?还是等待渲染完成?
在我看来,只有Present函数应该让主线程等待渲染完成。
绘制提交(并继续),实际上是屏幕更新的地方。您可以在启用VSync的情况下查看它,因为它会延迟。 – CodeAngry
@CodeAngry 谢谢。 只是为了确保我理解正确。我称之为Draw,数据发送到GPU,GPU开始计算,我称之为Present,当GPU完成计算后屏幕即会更新。那是对的吗? – DannyX