我的MTKView
渲染器偶尔遇到问题,无法获得1.0秒的currentRenderPassDescriptor
。根据文档,这要么是由于未设置视图的设备,要么是因为没有可绘制的对象。
如果没有可用的可绘制对象,则我看不到一种立即挽救或跳过该视频帧的方法。渲染循环将暂停1.0秒。
是否有解决方法?。任何帮助将不胜感激。
我的工作流程是一堆内核着色器工作,然后是一个最终的顶点着色器。我可以将最终的着色器绘制到自己的纹理上(而不是使用currentPassDescriptor
),然后将那个纹理蒙蔽到视图的currentDrawable
中,但是在获得该可绘制对象的过程中,我们又回来了同样的停滞情况。
我是否应该完全摆脱MTKView
,而转而使用CAMetalLayer
呢?同样,我怀疑也会出现同样的停滞问题。是否有办法像在maximumDrawableCount
上一样在MTKView
上设置CAMetalLayer
?
我有点困惑,因为根据《金属系统追踪》,我的工作总是在iMac 2015 R9 M395上以每帧5.0毫秒的速度完成。