Metal - 如何从预定的处理程序回调中呈现drawable

时间:2017-02-26 17:10:12

标签: objective-c metal

我在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的任何示例。

1 个答案:

答案 0 :(得分:2)

我不确定呈现drawable的两种方式之间的实现差异,但可能是present调用不表示帧边界的情况。您是否尝试在呈现drawable后在命令队列中显式调用insertDebugCaptureBoundary()

相关问题