OpenGL ES与OpenGL

OpenGL ES和OpenGL有什么区别?

OpenGL ES和OpenGL之间的两个更重要的区别是删除了glBegin … glEnd调用原语渲染的语义(有利于顶点数组),并引入了用于顶点坐标和属性的定点数据types以更好地支持embedded式处理器的计算能力,往往缺乏一个FPU

看看这里: OpenGL_ES

OpenGL ES是embedded式系统的opengl api。 就API函数的数量而言,它比普通的opengl更简单,但是可能更难使用,因为您将不得不使用顶点缓冲区并编写更多的着色器。

当你使用一个普通的opengl时,你可以使用glBegin和glEnd来包围你需要绘制的几何图元,但是在使用Opengl ES时,你将不得不使用顶点缓冲区。 我想这是出于性能方面的考虑。

目前,有两个Opengl ES版本,1.1版本只能支持固定渲染pipe线,而2.0版本则支持glsl着色器。 但是它没有固定的渲染pipe线。 换句话说,你将不得不为所有事情编写自己的着色器。

Opengl ES主要用于手机和网页(webgl)。 根据规范,你的桌面opengl驱动可以支持所有的opengl es apis。

就像要补充的那样,OpenGL 3.3和OpenGL ES 2.0大部分是可互操作的,通过使用OpenGL 3.3的一个子集。 对于Android / IOS / Windows / OSX / Linux,我的自定义C ++引擎使用相同的API调用,有一些定义。

主要区别在于:

  • 缺less几何着色器的支持
  • 没有最小/最大混合(这可能是一个扩展)
  • 没有四列表原语
  • 更受限制的纹理格式(特别是关于浮点)
  • glGetTexImage不可用
  • 没有变换反馈,对于其他几个高级function也是如此

还有很多其他的不同之处,但涵盖了其中一些重要的不同之处。

在这里回顾OpenGL ES概述: http : //www.khronos.org/opengles/

总之,ES是“embedded式系统”Open GL的一个子集。 具体的差异将取决于您正在比较的版本和function集。

OpenGL ESregistry包含OpenGL ES和相应版本的OpenGL之间的详细API差异:

  • OpenGL ES 2.0 / OpenGL 2.0
  • OpenGL ES 1.1 / OpenGL 1.5

但是,没有包含OpenGL ES 3.0差异的文档。

OpenGL ES意味着用于embedded式系统的开放graphics库(OpenGL ES或GLES)是OpenGL计算机graphics渲染应用程序编程接口(API)的子集,用于渲染2D和3D计算机graphics,例如video游戏所使用的计算机graphics,通常是硬件加速一个graphics处理单元(GPU)。 它专为智能手机,电脑平板电脑,video游戏机和PDA等embedded式系统而devise。

OpenGL | ES官方网站: http : //www.opengl.org/

你也可以从wiki获得更多信息: http : //en.wikipedia.org/wiki/OpenGL_ES

如果你问“OpenGL和OpenGL ES有什么区别”,我想你会得到更好的答案。

OpenGL ES 1.1和ES 2.0,OpenGL 1.5和2.0以及OpenGL 3.0和4.0之间有很大的差异。

正如其他人所描述的,ES是为embedded式系统编写的。 它也是GL规范自成立以来的第一次“房屋清洁”。 OpenGL有很多方法可以做同样的事情(例如,你可以用两种不同的方式绘制矩形/矩形,并以两种不同的方式将像素图像分成两部分)。 ES比OpenGL简单一些,function较less,因为它是为较简单的硬件而devise的。

我强烈build议您不要将OpenGL ES 1.1视为过去,并不代表OpenGL或OpenGL ES未来在架构上的移动方式。

术语和版本相当混乱(特别是对于新手)。 这里有一个链接,给出一个合理的概述。 看看是否有帮助。

OpenGL – 然后和现在

两者之间的主要区别在于,OpenGL ES是针对智能手机等embedded式系统而开发的,而OpenGL则是针对台式机的。 在编码层面,OpenGL ES不支持像glBegin / glEnd等固定function的function。OpenGL可以支持固定functionpipe道(使用兼容性configuration文件)。

OpenGL是二维和三维graphicsAPI,为各种计算机平台带来数千种应用程序。

OpenGL ES是桌面OpenGL的明确定义的子集

OpenGL®ES是一个免版税的跨平台API,用于embedded式系统(包括控制台,电话,设备和车辆)的全function2D和3Dgraphics。 它包括定义好的桌面OpenGL子集,…

看到这个链接 。

PS

WebGL与OpenGL ES共享规范,也就是说,如果您学习了桌面OpenGL,学习其他(OpenGL ES,WebGL)也很简单。

ES 3.0与OpenGL 4.6相比,现代的答案与接受的答案有所不同。 现在,所有的固定pipe道的东西都没有了。

ES,EMBEDDED SYSTEMS,远没有那么强大。

简单地说,opengl是桌面版本,而opengl是用于embedded式系统的,比如手机内存和性能限制比计算机更多。 opengl es会更难使用。