OpenGL
OpenGL 定义了一个跨编程语言、平台的编程接口的规范,一般用于三维图形,但也可用于二维图像。OpenGL 是一个功能强大,调用方便的底层图形库,它与硬件无关可以在不同的平台如windows 、mac、linux 等之间进行移植,支持OpenGL 的软件具有很好的移植性,可以获得非常广泛的支持。OpenGL 不提供几何实体格式,不能直接用于描述场景。但是,通过一些转换程序,可以很方便的将AutoCAD 、3ds MAX 等3D 设计软件制作的DXF 和3DS 模型文件转换成OpenGL 的顶点数组。
OpenGL 可以与Visual C++ 紧密结合,以实现有关计算和图形算法。OpenGL 使用便捷、效率高,可以实现建模、变换、映射(光照、材质、纹理)等功能。此外,OpenGL 还能实现运动模糊等特殊效果,并支持消隐算法。
OpenGL、OpenGL ES、WebGL
我们介绍了OpenGL ,知道了它是用于计算机图形绘制的编程接口标准,支持不同平台上的图形绘制,在计算机上发挥了重要作用。后来,随着手机等移动设备性能的快速提高,人们已经不满足于将移动设备的应用止于通讯应用、记事等传统平面应用。而越来越注重移动设备功能的多样化、娱乐化,手机3D 游戏、GPS 导航系统等代表了未来移动设备发展的方向。基于这种情况,Khronos 组织于2003 年7 月发布了专门针对于嵌入式设备图形开发的标准OpenGL ES(OpenGL for Embedded Systems) 。
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 语法来操作的。