OpenGL ES和OpenGL有什么区别?
OpenGL ES和OpenGL有什么区别?
Answers:
OpenGL ES和OpenGL之间的两个更重要的区别是删除了glBegin ... glEnd调用语义(用于原始渲染)(支持顶点数组),以及引入了用于顶点坐标和属性的定点数据类型以更好地支持嵌入式处理器的计算能力,通常缺乏FPU
在这里看看:OpenGL_ES
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。
就像要补充一点一样,通过使用OpenGL 3.3的功能的子集,OpenGL 3.3和OpenGL ES 2.0大多可以互操作。我的自定义C ++引擎对Android / IOS / Windows / OSX / Linux使用相同的API调用,并带有一些定义。
主要区别在于:
还有许多其他差异,但涵盖了几个重要的差异。
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
在此处查看OpenGL ES概述:http : //www.khronos.org/opengles/
简而言之,ES是“嵌入式系统”的Open GL的子集。具体差异将取决于您要比较的版本和功能集。
OpenGL ES注册表包含OpenGL ES与相应版本的OpenGL之间的详细API区别:
但是,没有包含OpenGL ES 3.0差异的文档。
我想如果您问“ 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在未来的架构移动方式。
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