Since I updated iOS 10, I can no longer display the Sprite Kit scene in Scene Node when using openGL for rendering. Everything works fine with Metal. Error logs: "Failed to create IOSurface image (texture)"
I used to be able to do something like:
class ViewController: UIViewController { @IBOutlet weak var scnView: SCNView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. scnView.showsStatistics = true scnView.allowsCameraControl = true let scnScene = SCNScene() scnView.scene = scnScene print("scnView renderingAPI is metal", scnView.renderingAPI == SCNRenderingAPI.metal) print("scnView renderingAPI is opengl", scnView.renderingAPI == SCNRenderingAPI.openGLES2) // setup SceneKit scene let cameraNode = SCNNode() cameraNode.camera = SCNCamera() cameraNode.position = SCNVector3(x: 0.0, y: 0.0, z: 25.0) scnScene.rootNode.addChildNode(cameraNode) let cubeNode = SCNNode() cubeNode.geometry = SCNBox(width: 5.0, height: 5.0, length: 5.0, chamferRadius: 0.0) scnScene.rootNode.addChildNode(cubeNode) // setup SpriteKit Scene let skScene = SKScene() skScene.backgroundColor = UIColor.black skScene.size = CGSize(width: 100, height: 100) let skNode = SKShapeNode(rect: CGRect(x: 0.0, y: 0.0, width: 10.0, height: 10.0)) skNode.fillColor = UIColor.green skNode.position = CGPoint(x: 5.0, y: 5.0) skScene.addChild(skNode) cubeNode.geometry?.firstMaterial?.diffuse.contents = skScene } }
(there is a repo here to reproduce this: https://github.com/gsabran/iOS10-OpenGLRenderingBug )
ios10 opengl-es sprite-kit scenekit metal
Guig
source share