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方便。

猜你喜欢

转载自juejin.im/post/5bffedbbe51d4563207863f5