WebGL,OpenGL和OpenGL ES三者的关系

 

一、OpenGL ES简介
在上一章中,我们介绍了OpenGL,知道了它是用于计算机图形绘制的编程接口标准,支持不同平台上的图形绘制,在计算机上发挥了重要作用。

后来,随着手机等移动设备性能的快速提高,人们已经不满足于将移动设备的应用止于通讯应用、记事等传统平面应用。而越来越注重移动设备功能的多样化、娱乐化,手机3D游戏、GPS导航系统等代表了未来移动设备发展的方向。基于这种情况,Khronos组织于2003年7月发布了专门针对于嵌入式设备图形开发的标准OpenGL ES(OpenGL for Embedded Systems)。

二、WebGL简介
WebGL,是一项用来在网页上绘制和渲染复杂三维图形(3D图形),并允许用户与之交互的技术。随着个人计算机和浏览器的性能越来越强,我们能够在Web上创建越来越精美、越来越复杂的3D图形。

从传统意义上来说,为了显示三维图形,开发者需要使用C或C++语言,辅以专门的计算机图形库,如OpenGL或Direct3D,来开发一个独立的应用程序。现在有了WebGL,我们只需要向已经熟悉的HTML和JS中添加一些额外的三维图形学的代码,就可以在网页上显示三维图形了。

  WebGL是内嵌在浏览器中的,不必安装插件和库就可以直接使用它。

三、三者关系
OpenGL ES可以说是OpenGL为了满足嵌入式设备需求而开发一个特殊版本,是其一个子集;而WebGL,是为了网页渲染效果,将JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定得到。基本关系如下图所示:

 

 

 

在实际应用过程中,前端的WebGL是通过JS语句,操作本地的OpenGL的部分接口,对于移动设备这是操作OpenGL ES的接口,来实现页面的图形的渲染,WebGL只是绑定外面接口的一层,内部的一些核心内容,如着色器,材质,灯光等都是需要借助GLSL ES语法来操作的。

三者的版本关系如下图所示:

 

 

 

四、三者区别
WebGL与其他OpenGL最大差别就是其可以通过HTML脚本本身实现Web交互式三维动画的制作,无需任何浏览器插件支持。

OpenGL ES和OpenGL最大差别就是两者应用场景不一样,一个是计算机,一个是移动或嵌入式设备。这种差别体现在两个方面:

窗口系统不一样。OpenGL ES是一个平台中立的图形库,在它能够工作之前,需要于一个实际的窗口系统关联起来,这一点OpenGL也是一样的。但是OpenGL时代在不同平台上有不同的机制一关联窗口系统,在Windows上是wgl,在X-Window上市xgl,在Apple OS上是agl等。而嵌入式市场的平台种类不计其数,单是学习各家手机操作系统的接口就是很大负担了,更不用说致力于支持各种尺寸平台的软件开发者,所以OpenGL ES提供了Window Surface的抽象,使得移植工作基本可以局限在重新实现一下建立窗口的过程。这个窗口工具是EGL,全称:embedded Graphic Interface,是 OpenGL ES 和底层 Native 平台 视窗系统之间的接口。
功能规模不一样。嵌入式设备和移动设备追求的是高性能,因此OpenGL ES相对OpenGL删减了一切低效能的操作方式,有高性能的决不留低效能的,即只求效能不求兼容性(和苹果的作风类似)。典型的有:
没有double型数据类型,但加入了高性能的定点小数数据类型。
没有glBegin/glEnd/glVertex,只能用glDrawArrays/glDraw...............
没有实时将非压缩图片数据转成压缩贴图的功能,程序必须直接提供压缩好的贴图
————————————————
原文链接:https://blog.csdn.net/qq_23034515/article/details/108283747

 

posted @ 2023-03-08 10:43  imxiangzi  阅读(462)  评论(0编辑  收藏  举报