Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 强制SCNView使用OpenGL_Macos_Opengl_Scenekit_Metal - Fatal编程技术网

Macos 强制SCNView使用OpenGL

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

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

如果我在Xcode 7中创建了一个新游戏项目后尝试这样做:

var context=gameView.context

结果是零。该视图使用的是金属,而不是OpenGL

但是,在Xcode 6.4中创建相同的代码时,上下文就像预期的那样存在


如何强制我的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)])