1

SCNView 的文档中指出:

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

我在任何地方都找不到哪些功能被禁用。我想在 SceneKit 中使用我自己的着色器(将 SCNProgram 分配给我的材质)并且我尝试使用 3D 纹理。但我收到以下错误:

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

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

额外的问题:既然 iOS 已经完全支持,为什么 Apple 在 SceneKit 中只支持 OpenGL ES 3.0 的一个子集?

4

1 回答 1

0

SceneKit 的某些功能在 ES3 上下文中不起作用。您应该仍然能够在 OpenGL 代码中使用所有 ES3 功能。

这看起来像是 SceneKit 检测到与其更高级别 API 一起使用的统一声明中的一个错误......所以你将无法SCNMaterialProperty使用setValue:forKey:. 但是,您仍然应该能够使用着色器程序——您必须将它与glBindTexture/绑定glActiveTexture(在您设置的块内handleBindingOfSymbol:usingBlock:)。

于 2014-08-27T16:31:41.257 回答