1. 程式人生 > >Xcode External Build System 失敗的 Capture GPU Frame 經歷

Xcode External Build System 失敗的 Capture GPU Frame 經歷

文件列表見:Rust 移動端跨平臺複雜圖形渲染專案開發系列總結(目錄)

根據kvark指導,用Xcode建立External Build System專案可通過Capture GPU Frame抓取gfx-hal的examples專案,這很方便開發gfx。但是,折騰一番,我在3臺mac上一執行就崩潰。劉子殊兄弟在他本地測試也崩潰。
如果誰測試正常,工程打包發我並請加我微信(資料上寫了),發你紅包表示感謝。

2015年用External Build System專案單步除錯FFmpeg原始碼,很順利。我覺得可能是工程配置出錯了。終端直接執行gfx/examples/quad是正常的。

幾個替代方案:

  • Rust暴露C介面接入macOS專案。給gfx/examples填寫FFI介面,讓C/C++呼叫Rust實現的功能。在繪製過程中正常使用Capture GPU Frame。
  • 利用Metal MTLCommandBuffer addCompletedHandler介面新增執行完成的日誌。缺點是,只能驗證MTLCommandBuffer確實被GPU執行完,沒法檢視渲染結果。用Compute Shader做數值計算場合用這個方案倒是可以接受。
  • 類似上一方案,不輸出日誌,改為讀取MTLCommandBuffer目標紋理的畫素值,通過CIImage生成影象,通過Xcode外掛進行檢視。缺點,線上除錯Shader沒Capture GPU Frame方便。