21VulKan——紋理繪製

繪製函數

該方法會執行下面的操作:

1.從交換鏈獲取圖像;

2.用該圖像作爲幀緩衝中的附件來執行命令緩衝;

3.將圖像返回給交換鏈以便呈現。

這些事件每一個都是使用單個方法調用來啓動的,但是它們都是異步的。方法調用會在實際操作結束之前返回,且執行順序也是不一定的。這就很不幸了,因爲每個操作都依賴於之前的操作完成纔行。

有兩種方式來同步交換鏈事件:柵欄和信號量。它們倆對象都能用於協調操作,方式就是設置一個操作信號,另一個操作等到一個柵欄或者信號量,然後從一個未標記的狀態變成標記的狀態。

不同之處是柵欄狀態可以從你的程序中通過類似vkWaitForFences的調用來訪問,而信號量卻不行。柵欄主要是設計用於同步你的應用和渲染操作的,然而信號量用於同步命令隊列操作。想要同步繪製命令和呈現的序列操作,選用信號量最合適。

儘管現在我們設置了需要的對象來促進同時使用多幀,我們還是沒有防止有多餘MAX_FRAMES_IN_FLIGHT的工作提交。當前只有GPU-GPU同步而沒有CPU-GPU同步以跟蹤任務如何進行。我們可能在0號幀還未準備好的時候用0號幀的對象。

爲了進行CPU-GPU同步,Vulkan提供了第二種同步原語叫做柵欄。柵欄和信號量類似,它們可以被標記和等待,但是這次我們實際上在自己的代碼中等待。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章