我将启动一个新的跨平台openGL项目(主要用于iPhone和PC)。所以这里有一个主要问题:目标是OpenGL ES 1.1还是OpenGL ES 2.0?还是两者都有?到目前为止,我读到Open GL ES 1.1并不是真的被弃用了,不是吗?那么,openGL ES 2.0有什么优势呢?可编程顶点和碎片着色器-还有别的吗?我听说alpha混合会降低性能--这是真的吗?我假设openGL ES 2.0代码也应该在PC上运行-那么openGL ES 2.0真的更有未来意识吗?
其他开发人员还在为OpenGL ES 1.1或2.0编写代码吗?为什么?我假设如果我选择openGL ES 2.0,那么与openGL ES 1.1的向后兼容性也会有很多开销。但是有很多没有openGL ES 2.0支持的iPhones --我该怎么做呢?有什么经验吗?
我只发现这个问题:OpenGL ES 1.1 or 2.0 on iPhone有点相关,但它对实现并不是很深入……因此,欢迎任何建议!非常感谢!
发布于 2011-01-25 05:57:34
使用OpenGL ES 1.1还是2.0取决于您希望在应用程序中执行什么操作,以及需要与多少设备兼容。所有iOS设备都支持OpenGL ES 1.1,只有iPhone 3G S和更新的设备(iPhone 3G S、iPhone 4、iPad以及第三代和第四代iPod touch)支持OpenGL ES 2.0。然而,苹果目前出货的所有iOS设备都与OpenGL ES 2.0兼容。不支持OpenGL ES 2.0的设备比例每天都在下降。从发布之日起,所有的iPads都支持OpenGL ES 2.0,所以如果你的目标是那种外形规格,你肯定会得到支持。
OpenGL ES 2.0和1.1使用不同且完全不兼容的渲染管道。OpenGL ES 1.1使用固定的函数管道,您可以在其中输入几何体和纹理数据,设置照明等状态,并让OpenGL为您处理其余工作。OpenGL ES 2.0基于可编程管道,您可以在其中提供顶点着色器和片段着色器,以处理如何将内容呈现到屏幕的细节。
因为您必须编写自己的代码来替换甚至最基本的内置函数,所以使用用于简单3-D应用程序的OpenGL ES 2.0可能需要比OpenGL ES 1.1更多的工作。此外,您发现的大多数示例应用程序和编写都是面向1.1的,因此使用2.0API可能会更加困难。
但是,您可以编写自己的例程来处理几何体和纹理以及它们在屏幕上的显示方式,这意味着OpenGL ES 2.0允许您执行在OpenGL ES 1.1中根本不可能(或需要大量工作)的事情。这些包括像卡通着色和环境光遮挡照明的效果,以及让你做一些有趣的事情,比如将大量并行工作卸载到GPU。
如果你想看一些使用OpenGL ES 2.0可以做什么的例子,可以在on iTunes U上找到我教授的课程的视频,我创建了两个样例应用程序here和here。
当谈到跨平台兼容性时,着色器已经在桌面OpenGL上提供了一段时间,因此使用OpenGL ES 1.1或2.0构建的任何内容都应该可以相当容易地移植到桌面上。
如果您可以在OpenGL ES 1.1中执行所需的渲染,则可以通过这种方式提供最大的设备兼容性。然而,目前使用的大多数iOS设备都支持OpenGL ES 2.0 (我现在找不到这方面的统计数据,但这是基于出货量),而且这个数字只会随着时间的推移而增长。OpenGL ES 2.0允许您实现一些令人惊叹的效果(请参阅史诗城堡),这些效果可以帮助您将您的应用程序与其他应用程序区分开来。
发布于 2013-12-15 00:46:21
基本上,只有 the iPhone 3G and prior (2010年停产)和iPod第二代及更早版本(2010年9月停产)需要您使用OpenGL ES 1.0。
所有iPads、iPad minis和iPhones 3GS之后的版本都支持OpenGL ES 2.0。事实上,在2010年9月之后销售的任何iOS设备(作为全新设备)都支持OpenGL ES 2.0。
OpenGL ES 3.0支持
自2013年11月起,您不仅获得了ES 2.0支持,而且iPhone 5S + iPad Air (iPad第5代)现在也支持OpenGL ES 3.0。
发布于 2015-02-19 05:35:33
目前,我严重怀疑是否有任何设备不支持OpenGLES 2.0!在OpenGLES 2.0上多花点功夫,你就不会过时了,特别是OpenGLES 3.0已经出来了。实际上,我发现OpenGLES 2.0比1.1更容易,因为我可以执行自己的矩阵计算,并精确地指定着色器中的内容。
另一件事是,如果你要使用OpenGLES 1.1API,你需要知道它实际上是作为一个着色器实现的,而且它不是一个硬件的东西,如果这是有意义的话。OpenGLES 2.0运行实现OpenGLES 1.1固定函数管道的顶点着色器。
这很简单--至少是OpenGLES 2.0!
https://stackoverflow.com/questions/4784137
复制相似问题