强制 SCNView 使用 OpenGL

Force SCNView to use OpenGL

当使用 Xcode 7 并创建一个新的 SceneKit OS X 项目时,似乎默认使用 Metal 作为 SCNView。

如果我在 Xcode 7:

中创建一个新的游戏项目后尝试这样做

var 上下文 = gameView.context

结果为零。该视图使用的是 Metal 而不是 OpenGL。

然而,在 Xcode 6.4 中创建相同的内容,上下文如预期的那样存在。

如何强制我的 SCNView 使用 OpenGL 而不是 Metal?

创建 SCNView 时,您可以选择在初始化程序中设置渲染器:

https://developer.apple.com/library/prerelease/ios/documentation/SceneKit/Reference/SCNView_Class/index.html#//apple_ref/occ/instm/SCNView/initWithFrame:options:

这些是您可用的选项,Metal 或 OpenGL ES 2.0(3.0 可能会稍后推出):

https://developer.apple.com/library/prerelease/ios/documentation/SceneKit/Reference/SCNSceneRenderer_Protocol/index.html#//apple_ref/c/tdef/SCNRenderingAPI

所以设置为 SCNRenderingAPIOpenGLES2 将得到你想要的,强制 OpenGL ES 2.0 渲染的 SceneKit 视图

您可以使用下面的代码轻松完成

let scnView = SCNView(frame: .zero, options: [SCNView.Option.preferredRenderingAPI.rawValue : NSNumber(value: SCNRenderingAPI.openGLES2.rawValue)])