金属:有没有办法丢弃绘图命令?

时间:2017-01-03 08:52:45

标签: ios macos metal

我的应用程序中有一个独特的情况,很少我会在我的Metal应用程序(在iOS和macOS上)发出绘图命令,我最终不需要实际执行它们。有没有办法安全地丢弃其中一个渲染管道对象而不将其提交给GPU?

我试图丢弃我的MTLRenderCommandEncoder,但是当对象被解除分配时会跳过一个断言(因为我没有调用endEncoding)。如果我放弃MTLCommandBuffer,它仍会被MTLCommandQueue引用,所以它最终会坐在那里(并使用我可用的命令缓冲区之一)。我还没有尝试放弃整个MTLCommandQueue

我错过了一些选择吗?我猜测答案是否定的,但我认为值得一提。

注意:如果你想知道我可能有什么原因可以发出渲染调用然后在运行时“改变我的想法”,答案是这些调用来自另一个库由第三方代码使用。遗憾的是,该库支持在不会最终使用的对象上进行渲染调用的场景。我必须发出对Metal的调用,但是如果可能的话,我想避免实际执行它们。

我可以使用自己的数据结构排队绘图调用,只有在我知道需要渲染的东西时才调用Metal,但这会大大增加代码的复杂性。

0 个答案:

没有答案