想要抛弃MTKView.currentRenderPassDescriptor

时间:2018-10-31 17:27:08

标签: metal metalkit

我的MTKView渲染器偶尔遇到问题,无法获得1.0秒的currentRenderPassDescriptor。根据文档,这要么是由于未设置视图的设备,要么是因为没有可绘制的对象。

如果没有可用的可绘制对象,则我看不到一种立即挽救或跳过该视频帧的方法。渲染循环将暂停1.0秒。

是否有解决方法?。任何帮助将不胜感激。

我的工作流程是一堆内核着色器工作,然后是一个最终的顶点着色器。我可以将最终的着色器绘制到自己的纹理上(而不是使用currentPassDescriptor),然后将那个纹理蒙蔽到视图的currentDrawable中,但是在获得该可绘制对象的过程中,我们又回来了同样的停滞情况。

我是否应该完全摆脱MTKView,而转而使用CAMetalLayer呢?同样,我怀疑也会出现同样的停滞问题。是否有办法像在maximumDrawableCount上一样在MTKView上设置CAMetalLayer

我有点困惑,因为根据《金属系统追踪》,我的工作总是在iMac 2015 R9 M395上以每帧5.0毫秒的速度完成。

0 个答案:

没有答案