选择OpenGL ES 1.1或OpenGL ES 2.0?

Con*_*tin 31 iphone cross-platform opengl-es opengl-es-2.0

我将开始一个新的跨平台openGL项目(主要用于iPhone和PC).所以主要问题是:针对OpenGL ES 1.1或OpenGL ES 2.0?或两者?到目前为止我读过Open GL ES 1.1并没有真正弃用,不是吗?那么对于openGL ES 2.0会说些什么呢?可编程顶点和碎片整理器 - 还有别的吗?我听说阿尔法混合后性能下降了 - 这可能是真的吗?我假设openGL ES 2.0代码也应该在PC上运行 - 那么openGL ES 2.0是否真的更具未来意识?

那里的其他开发人员仍然在编写OpenGL ES 1.1或2.0?为什么?我假设如果我选择openGL ES 2.0,那么与openGL ES 1.1的向后兼容性也会有很多开销.但是有很多iPhone没有openGL ES 2.0支持 - 我该怎么做到这一点?那里有经验吗?

我发现只有这个问题:iPhone上的OpenGL ES 1.1或2.0类型相关,但实现并不是很深入......所以欢迎任何建议!非常感谢!

Bra*_*son 52

是否使用OpenGL ES 1.1或2.0取决于您希望在应用程序中执行的操作,以及需要与其兼容的设备数量.所有iOS设备都支持OpenGL ES 1.1,其中只有iPhone 3G S和更新的设备(iPhone 3G S,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中进行所需的渲染,则可以采用这种方式提供最大的设备兼容性.然而,显著大多数目前使用支持OpenGL ES 2.0的iOS设备(我现在不能找到这种权利的统计数据,但它是基于出货量),而且这个数字只会随时间增长.OpenGL ES 2.0可以让您实现一些令人惊叹的效果(请参阅Epic Citadel),它可以帮助您将应用程序与其他应用程序区分开来.

  • @ d.ennis - GLKit基于OpenGL ES 2.0,所以它只会强化在新开发中使用2.0的情况.GLKit有一些有用的抽象,但最终你需要处理OpenGL ES API,因此从头开始学习OpenGL ES 2.0是非常值得的.我还没有在我的项目中使用GLKit,但我最近所做的一切都依赖于OpenGL ES 2.0. (3认同)