我是新來的蘋果金屬API和圖形編程的一般。我正在慢慢構建一個遊戲引擎,從UI開始。我的用戶界面基於每個都有自己的子節點列表的節點。因此,如果我有一個帶有三個「按鈕」的子菜單的「菜單」節點,調用render(:MTLDrawable:CommandQueue)
,菜單將通過向隊列提交一個命令緩衝區將自身呈現給drawable,然後使用相同的方法爲其所有子節點調用相同的方法繪製和隊列,直到整個節點樹已經從上到下渲染。我希望生成一個單獨的子線程來渲染樹中的每個節點 - 我是否可以將每個渲染函數包裝在調度異步調用中?命令隊列本質上是線程安全的嗎?在使用Metal呈現多個對象之前,同時將多個對象渲染爲單個紋理的解決方案是什麼?到目前爲止,在任何Metal教程中看到的所有內容都是一個線程,它使用每個幀的單個命令緩衝區按順序渲染所有內容,在每個幀的末尾調用presentDrawable()
,然後調用commit()
。多線程與金屬
編輯 當我說我想用多線程,它僅適用於命令編碼,而不是執行本身。我不想結束繪製理論菜單中的按鈕,然後由於執行順序錯誤而被菜單背景覆蓋。我只是希望每個對象的渲染操作都被編碼到一個單獨的線程上,然後交給命令隊列。