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

标签 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”在这里似乎不起作用)。

最佳答案

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 并支持所有设备。

关于ios - OpenGL ES 3.0 上下文未在 iPad 上创建(在模拟器中工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30947039/

相关文章:

iphone - 如何在 App Store 中要求 iPad 2 或 iPhone 4S

android - OpenGL 乘以 ProjectionMatrix 和 ModelMatrix

ios - ipad 横向/纵向图像

ios - 快速处理所有未处理的异常

ios - UIPageViewController 内的 UIPageViewController

html - Bootstrap Modal 按钮不起作用,仅适用于 iOS

ios - 应用拒绝说明 - 帮助了解实际问题是什么?

ios - 适用于 iOS 的 ffmpeg 替代品

iphone - 为什么我的 OpenGL ES View 在 iOS 4.3 上有时是空白的?

ios - 在 Swift 中打乱字符串