我在MacOS上使用Metal并且似乎找不到任何明确的文档来提供正确的方法来呈现drawable而不使用MTLCommandBuffer上的帮助函数,presentDrawable(我不能使用它由于设计的应用程序也试图支持多个渲染器,并且不允许类管理命令缓冲区直接了解drawables。
Apple's docs州 " presentDrawable:方法是一种方便的方法,它调用addScheduledHandler:来呈现一个可绘制对象。"这似乎意味着presentDrawable只是这样做:
[buf addScheduledHandler:^(id<MTLCommandBuffer> buf)
{
[drawable present];
}];
虽然这似乎实际上呈现了渲染结果,但似乎缺少一些东西,Metal框架希望指示帧的结束,因为Xcode&#34;捕获GPU帧&#34; ;在应用程序的生命周期内保持禁用状态,Xcode中的FPS计数器仍为空。
我一直在网上寻找presentDrawable真正做过的事情,但除了使用presentDrawable和MetalKit的极其琐碎的样本之外,似乎无法找到使用Metal的任何示例。
答案 0 :(得分:2)
我不确定呈现drawable的两种方式之间的实现差异,但可能是present
调用不表示帧边界的情况。您是否尝试在呈现drawable后在命令队列中显式调用insertDebugCaptureBoundary()
?