OpenGl ES 3.0上下文未在iPad上创建(在模拟器中工作)

时间:2015-06-19 20:48:14

标签: ios ipad opengl-es opengl-es-3.0 openglcontext

我正在为PC(Windows,Linux,Mac)和iOS开发跨平台渲染器。 iOS部分目前是围绕OpenGL ES 2.0构建的,我想升级到ES 3.0。所以我替换了以下行(有效)

context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];

这一行:

context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];

...我包括OpenGLES / ES3 / gl.h和OpenGLES / ES3 / glext.h。

在模拟器中,这种方法非常好,但在实际的iPad上运行它不再起作用,上下文为零。

我真的不知道我在这里缺少什么,因为iPad运行的是最新版本的iOS(iOS 8.3),不应该有ES 3.0的问题。 我没有得到任何错误,我无法真正调试它(“Step into”似乎在这里不起作用)。

1 个答案:

答案 0 :(得分:1)

OpenGL ES 3在OpenGL ES 2上添加的功能取决于硬件,因此您只能在支持它的硬件上创建ES3上下文。如果在创建上下文时返回nil,则需要回退到使用OpenGL ES 2进行渲染。

支持ES3的iOS硬件是具有A7或更好GPU的任何东西。这是iPad Air,iPad Air 2,iPad mini 2& 3,iPhone 5s,6,& 6加......并且可能是后来发生的任何事情。

请注意,ES3的GPU要求与Metal的要求相同,因此如果您打算使用回退路径执行多个渲染器,您可能希望全力以赴为这些渲染器获得最佳性能设备。

另请注意,作为ES3核心OpenGL ES规范一部分的许多功能在iOS中仍然可用作ES2下的扩展。因此,如果您只是在寻找实例,那么您可以坚持使用ES2并支持所有设备。