我正在使用视频作为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
作为解决方法。对于iPhone 5s,SpriteKit的对象更“轻松”。
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)
}()
希望这可以帮助。