下面是一個UML序列圖,顯示了我對庫libGDX中游戲循環的理解的處理時間。我認爲它應該是每個其他遊戲庫的相同體系結構。我不確定我是否理解正確。理論上,CPU和GPU並行工作。當CPU等待GPU完成緩衝區更改時,這會使其成爲一個串行進程。 如何讓我的遊戲循環並行工作或者我的理解錯誤?渲染循環 - 最大並行
現在我們想要並行化圖像,並且GPU比CPU慢,CPU正在渲染時繼續下一幀。我們有第二個線程等待GPU完成。 GPU完成後,計算下一個圖像。 OpenGL狀態在哪裏改變,繪圖命令現在在哪裏? GPU現在很忙。這使我得出結論,我錯過了一些東西。
編輯:
在第二個圖中,爲什麼渲染調用返回到「CPU線程2」而不是「CPU線程1」? –
,因爲CPU必須交換前端和後端緩衝區。線程1正在渲染下一幀,所以線程2等待更改緩衝區。 –
對不起,我不清楚你的UML圖試圖通信那麼。圖中的「線程」是「控制線程」還是他們其他的?無論您是否交換兩個指針(或自LibGDX爲java之後的引用),仍然不會更改在GPU上阻塞的控制線程。我錯過了什麼嗎? –