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完全支持?
答案 0 :(得分:0)
SceneKit的某些功能 无法在ES3环境中运行。您仍然可以使用OpenGL代码中的所有ES3功能。
这看起来像SceneKit中的一个错误,它检测到与其更高级别的API一起使用的统一声明...因此您无法将SCNMaterialProperty
绑定到该制服上{ {1}}。但是,您仍然可以使用着色器程序 - 您必须将其与setValue:forKey:
/ glBindTexture
绑定(在使用glActiveTexture
设置的块内)