OpenGL ES与OpenGL


91

OpenGL ES和OpenGL有什么区别?


13
您正在比较哪些OpenGL和OpenGL ES版本?
Firas Assaad 2010年

3
如果您使用任何GL2内容,请始终以GLES2为基础。在GL2中有不同的处理方式,但在大多数情况下,在GLES2中是一种。同样,您不会以这种方式移植任何东西。
zezba9000


Answers:


54

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

在这里看看:OpenGL_ES


19
这些也从最新版本的桌面/工作站OpenGL中删除。
Ben Voigt 2010年

2
在OGL 3和GLES 2之间进行了有趣的比较。在OGL 3中,不建议使用即时模式(尽管仍受支持)。大部分(但不是全部)在OGL 3的功能是提供GLES 2
零空间

49

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

当使用普通的opengl时,可以使用glBegin和glEnd封装需要绘制的几何图元,但是当使用Opengl ES时,则必须使用顶点缓冲区。我想这是出于性能方面的考虑。

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

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


3
我认为,您不必使用顶点缓冲区。您也可以使用立即模式顶点数组。我错了吗?
重力

是的,您不必使用顶点缓冲区
Stanislav Ageev'Dec 1'12

2
“当您使用普通的opengl时,可以使用glBegin和glEnd来封装需要绘制的几何图元,”,如果您的代码是要向前兼容的,则不是,如果您使用的是Mac,则不是。上午;)
Jerfov2

38

就像要补充一点一样,通过使用OpenGL 3.3的功能的子集,OpenGL 3.3和OpenGL ES 2.0大多可以互操作。我的自定义C ++引擎对Android / IOS / Windows / OSX / Linux使用相同的API调用,并带有一些定义。

主要区别在于:

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

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


7
我认为我们可以慢慢编辑这篇文章,以包括所有缺少的函数调用。自同年发布以来,要比较的版本仍应为3.3和ES 2.0
CoffeDeveloper 2014年

8

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




4

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

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

正如其他人所描述的,ES是为嵌入式系统编写的。自成立以来,它也是GL规范的首次“房屋清洁”。OpenGL有一个)做同一件事的许多方法(例如,您可以用两种不同的方法绘制四边形/矩形,并用两种不同的方法将像素图像着色,等等)。一般而言,ES比OpenGL简单,功能较少,因为它是为不太复杂的硬件设计的。

我敦促您不要再看OpenGL ES 1.1,因为这已成为过去,并且不代表OpenGL或OpenGL ES在未来的架构移动方式。


4

术语和版本非常混乱(特别是对于新手)。有关OpenGL和OpenGL-ES(GLES)的更全面的信息,请参见OpenGL-Then and Now


1
该链接还包含一个包含示例的出色教程,并很好地解释了OpenGL渲染管道的工作方式。
JustWe

这是本教程的链接
AP-OSD

3

两者之间的主要区别是OpenGL ES是为嵌入式系统(如智能手机)制作的,而OpenGL ES是在台式机上使用的。在编码级别,OpenGL ES不支持固定功能功能,例如glBegin / glEnd等。OpenGL可以支持固定功能管线(使用兼容性配置文件)。


2

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

对于嵌入式系统,ES的健壮性要差得多。


1

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://zh.wikipedia.org/wiki/OpenGL_ES


0

简而言之,opengl是台式机版本,而opengl es是用于嵌入式系统(如手机)的,其内存和性能方面的限制要大于计算机。opengl es将更难使用。


0

OpenGL是2D和3D图形API,将成千上万的应用程序带到各种各样的计算机平台上。

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

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

请参阅此链接

聚苯乙烯

WebGL与OpenGL ES共享规范,即,如果您已经学习了台式机OpenGL,则可以轻松学习其他内容(OpenGL ES,WebGL)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.