如何在使用自定义着色器时在SceneKit中的节点上将视频渲染为漫反射纹理?这听起来像一个简单的事,但:iOS10 + SceneKit:使用自定义着色器渲染视频
- SceneKit元素不支持
AVPlayerLayer
作为输入纹理(SO) - 替代方案:用SpriteKit场景与SKVideoNode但
- :
- 转化的视频输出到CGImage,将它传递给一个CALayer的失败,并将此图层传递到SceneKit视频节点(不涉及SpriteKit)这是详细的here,但只要视频有点大,就不是一个可行的解决方案,因为所有的输出都被复制到图像上,并且这是昂贵的。
我仍然很不愿意摆脱SceneKit,因为它处理了很多opengl/metal的令人讨厌的低级别事情,但是我现在无法正常工作......
作为附加坏消息,它看起来像SpriteKit与Metal一起使用时存在内存泄漏,并且它保持活动的SceneView,因此所有父视图和附加到它们的所有东西...
你可以找到这个问题的复制here ,并且更简单一个here:
去年SpriteKit向前迈进了一步(一定是有所改进),并且大概有三个步骤(iOS 9)。苹果开始解决这些问题花了好几个月的时间。尽管有许多具体的,经常性的和相互矛盾的投诉,但他们并未公开承认问题。 – Confused
iOS 10看起来像是SceneKit回到了几步,还有一次前进(PBR)。 SceneKit拥有1/20(或更少)的SpriteKit用户。所以他们可能需要一整年的时间来解决问题。说了这么多,在SceneKit上工作的两个人在这些论坛中都很活跃。 – Confused
你知道吗?如果问题来自SceneKit或SpriteKit,我怎么能有一个想法? – Guig