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

问题描述 投票:1回答:1

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完全支持?

ios objective-c swift scenekit opengl-es-3.0
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.