Macos 强制SCNView使用OpenGL
当使用Xcode 7并创建新的SceneKit OS X项目时,SCNView似乎默认使用Metal 如果我在Xcode 7中创建了一个新游戏项目后尝试这样做: var context=gameView.context 结果是零。该视图使用的是金属,而不是OpenGL 但是,在Xcode 6.4中创建相同的代码时,上下文就像预期的那样存在Macos 强制SCNView使用OpenGL,macos,opengl,scenekit,metal,Macos,Opengl,Scenekit,Metal,当使用Xcode 7并创建新的SceneKit OS X项目时,SCNView似乎默认使用Metal 如果我在Xcode 7中创建了一个新游戏项目后尝试这样做: var context=gameView.context 结果是零。该视图使用的是金属,而不是OpenGL 但是,在Xcode 6.4中创建相同的代码时,上下文就像预期的那样存在 如何强制我的SCNView使用OpenGL而不是Metal?创建SCNView时,您可以选择在初始化器中设置渲染器: : 以下是您可用的选项,金属或OpenG
如何强制我的SCNView使用OpenGL而不是Metal?创建SCNView时,您可以选择在初始化器中设置渲染器: : 以下是您可用的选项,金属或OpenGL ES 2.0(3.0可能会在稍后提供):
因此,设置为SCNRenderingAPIOpenGLES2将得到您想要的,一个强制OpenGL ES 2.0渲染的场景视图您可以使用下面的代码轻松完成
let scnView = SCNView(frame: .zero, options: [SCNView.Option.preferredRenderingAPI.rawValue : NSNumber(value: SCNRenderingAPI.openGLES2.rawValue)])
了解这一点是件好事,但这不是您应该要求的解决方案。为什么您认为OpenGL ES 3.0支持是可能的?我不认为苹果有任何动机支持它。谢谢你,这解决了问题。我在看OSXAPI(不包含10.11API更改)。在Interface Builder中,还有一个用于呈现SCNView可用API的下拉菜单。应该这样设置:
SCNView(frame:view.bounds,options:[“preferredRenderingAPI”:SCNRenderingAPI.openGLES2])
,因为它不适合我:(@Guig最近没有尝试过。直到最近,当我向苹果公司报告SceneKit的渲染问题时,我才被忽略。因此,我对处理其众多问题的复杂性失去了兴趣。这不是一项正在进行的工作。最好的情况是,SceneKit是一份意图声明,很快就会被苹果公司忽视。我希望他们会放弃它在几个iOS版本中发布,并为2D和3D发布一个基于金属的引擎。支持和更新同样糟糕。如果有人仍在搜索,使用Swift 3中的OpenGL初始化的正确方法是:SCNView(frame:frame,options:[SCNView.Option.preferredRenderingAPI.rawValue:NSNumber(value:SCNRenderingAPI.openGLES2.rawValue)])