SCNProgram - 视频输入

时间:2016-09-13 07:36:41

标签: opengl scenekit

如何在SceneKit中将视频输入附加到SCNProgram?

不使用自定义程序,我可以这样做:

func set(video player: AVPlayer, on node: SCNNode) {
    let size = player.currentItem!.asset.tracks(
        withMediaType: AVMediaTypeVideo).first!.naturalSize
    let videoNode = SKVideoNode(avPlayer: player)
    videoNode.position = CGPoint(x: size.width/2, y: size.height/2)
    videoNode.size = size
    let canvasScene = SKScene()
    canvasScene.size = size
    canvasScene.addChild(videoNode)

    let material = SCNMaterial()
    material.diffuse.contents = canvasScene
    node.geometry?.materials = [material]
}

将视频呈现为SKScene,并将其用作SCNMaterial的输入。

我想在节点上使用SCNProgram,但我无法想出附加播放器输入。如果解决方案没有使用SKScene中间渲染,我不介意。如果没有它可能会更好。

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用AVPlayerLayer,它是CALayer的子类?您可以将CALayer提供给SCNMaterialProperty的内容属性。