SceneKit支持的OpenGL ES 3.0子集是什么?

时间:2014-08-27 15:41:43

标签: ios objective-c swift scenekit opengl-es-3.0

documentation of SCNView中声明:

  

SceneKit支持OpenGL ES 3.0,但在OpenGL ES 3.0上下文中渲染时​​会禁用某些功能

我找不到哪些功能被禁用。我想在SceneKit中使用自己的着色器(将SCNProgram指定给我的素材),我尝试使用3D纹理。但是我收到了以下错误:

SceneKit: error, C3DBaseTypeFromString: unknown type name 'sampler3D'

所以我猜测3D纹理是禁用功能的一部分,但我无法在任何地方找到确认。我是否必须放弃SceneKit并使用OpenGL手动完成所有渲染才能使用3D纹理?

奖金问题:为什么Apple只支持SceneKit中OpenGL ES 3.0的一部分,因为iOS完全支持?

1 个答案:

答案 0 :(得分:0)

SceneKit的某些功能 无法在ES3环境中运行。您仍然可以使用OpenGL代码中的所有ES3功能。

这看起来像SceneKit中的一个错误,它检测到与其更高级别的API一起使用的统一声明...因此您无法将SCNMaterialProperty绑定到该制服上{ {1}}。但是,您仍然可以使用着色器程序 - 您必须将其与setValue:forKey: / glBindTexture绑定(在使用glActiveTexture设置的块内)