是使用 OpenGL ES 1.1 还是 2.0 取决于您想在应用程序中做什么,以及需要与多少设备兼容。所有 iOS 设备都支持 OpenGL ES 1.1,其中只有 iPhone 3GS 和更新的设备(iPhone 3GS、iPhone 4、iPad 和第 3 代和第 4 代 iPod touch)支持 OpenGL ES 2.0。但是,Apple 当前发布的所有 iOS 设备都与 OpenGL ES 2.0 兼容。不支持 OpenGL ES 2.0 的设备百分比每天都在下降。所有 iPad 从发布之日起就支持 OpenGL ES 2.0,因此如果您以该外形尺寸为目标,则可以保证获得支持。
OpenGL ES 2.0 和 1.1 使用不同且相当不兼容的渲染管道。OpenGL ES 1.1 使用固定功能管道,您可以在其中输入几何和纹理数据、设置光照等状态,并让 OpenGL 为您处理其余工作。OpenGL ES 2.0 基于可编程管道,您可以在其中提供顶点和片段着色器来处理内容如何呈现到屏幕的细节。
因为您必须编写自己的代码来替换最基本的内置函数,所以将 OpenGL ES 2.0 用于简单的 3-D 应用程序可能比 OpenGL ES 1.1 需要更多的努力。此外,您在那里发现的大多数示例应用程序和文章都面向 1.1,因此开始使用 2.0 API 可能会更加困难。
然而,您可以编写自己的例程来处理几何体和纹理以及它们如何显示到屏幕上,这意味着 OpenGL ES 2.0 可以让您做一些根本不可能的事情(或者需要大量的努力) ) 在 OpenGL ES 1.1 中执行。这些包括卡通着色和环境光遮蔽照明等效果,以及让您做一些有趣的事情,例如将大量并行工作卸载到 GPU。
如果您想查看一些使用 OpenGL ES 2.0 可以做什么的示例,我在 iTunes U 上提供了有关该主题的课程的视频,我在这里和这里创建了两个示例应用程序。
在跨平台兼容性方面,着色器在桌面 OpenGL 上已经有一段时间了,所以你使用 OpenGL ES 1.1 或 2.0 构建的任何东西都应该可以相当移植到桌面。
如果您可以在 OpenGL ES 1.1 中进行您想要的渲染,那么您可以采用这种方式来提供最大的设备兼容性。但是,当今使用的绝大多数 iOS 设备都支持 OpenGL ES 2.0(我现在找不到这方面的统计数据,但它是基于出货量的),而且这个数字只会随着时间的推移而增长。OpenGL ES 2.0 可以让您实现一些令人惊叹的效果(请参阅 Epic Citadel),这些效果可以帮助您将您的应用程序与其他应用程序区分开来。