![](/img/trans.png)
[英]iPad Opengl ES program works fine on simulator but not device
[英]OpenGl ES 3.0 Context not created on iPad (works in Simulator)
我正在为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应该没有问题。 我没有收到任何错误,也无法真正调试它(“进入”似乎在这里不起作用)。
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 plus ...以及以后可能出现的任何东西。
请注意,ES3的GPU要求与Metal的要求相同,因此,无论如何,如果要使用后备路径进行多个渲染器,则可能要全力以赴,以使这些设备获得最佳性能。
还要注意,ES3中作为OpenGL ES核心规范一部分的许多功能仍在iOS中作为ES2下的扩展提供。 因此,如果您只是想实例化,则可以坚持使用ES2并支持所有设备。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.