幀開始時,我做了邏輯更新並在此之後渲染。 在我的渲染代碼中,我會做一些常用的東西。我設置了幾個狀態,緩衝區,紋理,並通過調用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