不幸的是,我似乎找不到捕获第一帧的方法.例如,在调试器中断开时(在第一帧之前设置断点),此选项不可用.调试开始后,Xcode行为似乎也不允许捕获帧.在Metal API或cametallayer中,似乎甚至没有用于执行GPU捕获的API.
有人成功完成了吗?
解决方法 我再次遇到这个问题,并且现在正确地想出来了.我将此作为单独的答案添加,因为它与我的其他答案完全不同.首先,一些背景.捕获GPU帧有三个组件:
>告诉要捕获GPU帧的Xcode.在典型的文档化使用中,您可以通过单击Xcode中的GPU Frame Capture“相机”按钮手动执行此 *** 作.
>指示要捕获的下一帧的开始.通常,这发生在MTLCommandBuffer presentDrawable:的下一次出现时,它被调用以将帧缓冲区呈现给基础视图.
>指示正在捕获的帧的结尾.通常,这发生在MTLCommandBuffer presentDrawable的下一次出现的情况下:
在捕获第一帧或第一帧之前的活动时,只有第三帧可用,因此我们需要另一种方法来执行前两项:
>要告诉Xcode开始捕获帧,在代码中的一行中在Xcode中添加一个断点,在您想要开始捕获帧的点之前的某个位置.右键单击断点,从d出菜单中选择“编辑断点…”,然后将“捕获GPU帧” *** 作添加到断点:
>要指示要捕获的帧的开始,在第一次出现MTLCommandBuffer presentDrawable:之前,您可以使用MTLCommandQueue insertDeBUGCaptureBoundary方法.例如,您可以在实例化MTLCommandQueue时立即调用此方法,以立即开始捕获提交到队列的所有内容.确保在调用此代码之前触发第1项中的断点.
>要指示捕获帧的结束,您可以依赖于MTLCommandBuffer presentDrawable:的第一次正常出现,或者您可以添加第二次调用MTLCommandQueue insertDeBUGCaptureBoundary.
最后,MTLCommandQueue insertDeBUGCaptureBoundary方法实际上并不会导致捕获帧.它只是标记了一个边界点,因此您可以将其保留在代码中以供将来调试使用.如果您希望它从生产代码中删除,请将其包含在DEBUG编译条件中.
总结以上是内存溢出为你收集整理的适用于iOS应用的“捕获GPU帧”第一帧全部内容,希望文章能够帮你解决适用于iOS应用的“捕获GPU帧”第一帧所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)