我正在使用视频作为 SCNNode 的素材:
geo.materials.first?.diffuse.contents = AVPlayer(url: url)
这在大多数 iOS 设备上正常但在较旧的 iPhone 5s 上崩溃并出现以下错误:
-[MTLTextureDescriptorInternal validateWithDevice:], line 781: error 'MTLTextureDescriptor has invalid pixelFormat (520).'
-[MTLTextureDescriptorInternal validateWithDevice:]:781: failed assertion `MTLTextureDescriptor has invalid pixelFormat (520).'
是否有针对此问题的修复/解决方法?
最佳答案
我认为这是 iPhone 5s 的硬件问题。尝试使用 SKVideoNode
作为解决方法。 SpriteKit 的对象对于 iPhone 5s 而言“更轻”。
var videoNode: SKVideoNode? = {
guard let urlString = Bundle.main.path(forResource: "file",
ofType: "m4v") else {
return nil
}
let url = URL(fileURLWithPath: urlString)
let item = AVPlayerItem(url: url)
let player = AVPlayer(playerItem: item)
return SKVideoNode(avPlayer: player)
}()
希望这对您有所帮助。
关于iphone - SceneKit – AVPlayer Material 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52343196/