OpenGL ES与OpenGL

时间:2010-12-23 13:44:07

标签: opengl opengl-es

OpenGL ES和OpenGL有什么区别?

14 个答案:

答案 0 :(得分:47)

  

OpenGL ES和OpenGL之间的两个更重要的区别是删除glBegin ... glEnd调用语义进行原始渲染(支持顶点数组)以及引入顶点坐标和属性的定点数据类型更好地支持嵌入式处理器的计算能力,这通常缺乏FPU

看看这里:OpenGL_ES

答案 1 :(得分:41)

OpenGL ES是嵌入式系统的opengl api。它在api函数的数量方面比普通的opengl简单,但可能更难使用,因为你必须使用顶点缓冲区并编写更多的着色器。

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

目前,有两个Opengl ES版本,1.1版本只能支持固定渲染管道,而2.0版本支持glsl着色器。但是它没有固定的渲染管道。换句话说,您必须为所有内容编写自己的着色器。

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

答案 2 :(得分:32)

通过使用OpenGL 3.3的一部分功能,添加OpenGL 3.3和OpenGL ES 2.0几乎可以互操作。对于Android / IOS / Windows / OSX / Linux,我的自定义C ++引擎使用相同的API调用,并有一些定义。

主要区别之一是:

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

还有许多其他差异,但这涵盖了几个重要的差异。

答案 3 :(得分:6)

在此处查看OpenGL ES概述:http://www.khronos.org/opengles/

简而言之,ES是“嵌入式系统”的Open GL的子集。具体差异取决于您要比较的版本和功能集。

答案 4 :(得分:6)

OpenGL ES意味着用于嵌入式系统的开放图形库(OpenGL ES或GLES)是OpenGL计算机图形渲染应用程序编程接口(API)的子集,用于渲染2D和3D计算机图形,例如视频游戏使用的那些,通常是硬件 - 使用图形处理单元(GPU)加速。它专为嵌入式系统而设计,如智能手机,平板电脑,视频游戏控制台和PDA。

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

您还可以从wiki获取更多信息:http://en.wikipedia.org/wiki/OpenGL_ES

答案 5 :(得分:5)

OpenGL ES注册表包含OpenGL ES与相应版本的OpenGL之间的详细API差异:

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

答案 6 :(得分:4)

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

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

正如其他人所描述的那样,ES是为嵌入式系统编写的。它也代表了GL规范自成立以来的首次“房屋清洁”。 OpenGL有a)许多方法可以做同样的事情(例如,您可以绘制四个/矩形两种不同的方式,并以两种不同的方式对像素图像进行blit等)。 ES比OpenGL更简单,功能更少,因为它是为不太复杂的硬件而设计的。

我建议你不要看OpenGL ES 1.1,因为它已成为过去,并不代表OpenGL或OpenGL ES未来在架构上的移动方式。

答案 7 :(得分:3)

术语和版本非常混乱(特别是对于新手)。这是一个相当好的概述链接。看看它是否有帮助。

OpenGL - Then and Now

答案 8 :(得分:2)

两者之间的主要区别在于OpenGL ES适用于智能手机等嵌入式系统,而OpenGL则适用于台式机。在编码层面,OpenGL ES不支持像glBegin / glEnd等固定功能函数...... OpenGL可以支持固定功能管道(使用兼容性配置文件)。

答案 9 :(得分:1)

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

对于EMBEDDED SYSTEMS来说,ES的稳健性要差得多。

答案 10 :(得分:0)

简单地说,opengl是桌面版,而opengl es适用于手机等嵌入式系统,其内存和性能限制超过计算机。 opengl es会更难使用。

答案 11 :(得分:0)

OpenGL是2D和3D图形API,为各种计算机平台带来了数千个应用程序。

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

  

OpenGL®ES是一种免版税的跨平台API,用于嵌入式系统上的全功能2D和3D图形 - 包括控制台,电话,电器和车辆。它由明确定义的桌面OpenGL子集组成......

请参阅此link

P.S。

WebGL与OpenGL ES共享规范,即如果您已经学习了桌面OpenGL,那么学习其他OpenGL ES(WebGL)就很简单。

答案 12 :(得分:0)

OpenGL ES只是嵌入式系统的OpenGL api(OpenGL ES指的是OpenGL嵌入式系统)。因此,它是OpenGL的子集,广泛用于手机和某些VR系统,它是为不太复杂的硬件设计的。 OpenGL ES的术语和功能比OpenGL少,您可以将其视为:您只需要该系统所需的东西,因为如果我们整体上不需要某个功能,或者硬件无法处理它,那么就没有必要添加该功能,但是由于需要编写更多的着色器和复杂的代码来使某些事情变得简单,因此使该API的使用更加困难,因为OpenGL ES在图形管道中不像OpenGL那样提供着色器。 OpenGL ES的最新版本是3.2,现在可以为其他几何细节(新的几何着色器)提供Tessellation支持。因此,我建议您开始学习或使用OpenGL ES 3.0+(以您的目标语言为准),因为现在和下一代将不再使用具有更强大硬件和图形卡的旧版本,并且如果您的目标是OpenGL从v3开始。 3+或4.0+。如果您有更多时间没问题,可以快速浏览一下旧版本,以进一步了解这些东西是如何开发的以及为什么。 您可以查看此链接以获取更多详细信息:https://en.wikipedia.org/wiki/OpenGL_ES

答案 13 :(得分:-1)

好吧,如2019.07

OGLES_3.2和OPENGL_4.6几乎相同,对吗?