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,OpenGL和OpenGL ES三者的关系_第1张图片

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

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

WebGL,OpenGL和OpenGL ES三者的关系_第2张图片

四、三者区别

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

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

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

你可能感兴趣的:(opengl,opengl,webgl)