OpenGL

OpenGL

OpenGL定义了一个跨编程语言、平台的编程接口的规范,一般用于三维图形,但也可用于二维图像。OpenGL是一个功能强大,调用方便的底层图形库,它与硬件无关可以在不同的平台如windows、mac、linux等之间进行移植,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的支持。OpenGL不提供几何实体格式,不能直接用于描述场景。但是,通过一些转换程序,可以很方便的将AutoCAD3ds MAX3D设计软件制作的DXF3DS模型文件转换成OpenGL的顶点数组。

OpenGL可以与Visual C++紧密结合,以实现有关计算和图形算法。OpenGL使用便捷、效率高,可以实现建模、变换、映射(光照、材质、纹理)等功能。此外,OpenGL还能实现运动模糊等特殊效果,并支持消隐算法。

OpenGL、OpenGL ES、WebGL

我们介绍了OpenGL,知道了它是用于计算机图形绘制的编程接口标准,支持不同平台上的图形绘制,在计算机上发挥了重要作用。后来,随着手机等移动设备性能的快速提高,人们已经不满足于将移动设备的应用止于通讯应用、记事等传统平面应用。而越来越注重移动设备功能的多样化、娱乐化,手机3D游戏、GPS导航系统等代表了未来移动设备发展的方向。基于这种情况,Khronos组织于20037月发布了专门针对于嵌入式设备图形开发的标准OpenGL ES(OpenGL for Embedded Systems)

WebGL,是一项用来在网页上绘制和渲染复杂三维图形(3D图形,并允许用户与之交互的技术。随着个人计算机和浏览器的性能越来越强,我们能够在Web上创建越来越精美、越来越复杂的3D图形。从传统意义上来说,为了显示三维图形,开发者需要使用CC++语言,辅以专门的计算机图形库,如OpenGLDirect3D,来开发一个独立的应用程序。现在有了WebGL,我们只需要向已经熟悉的HTMLJS中添加一些额外的三维图形学的代码,就可以在网页上显示三维图形了。WebGL是内嵌在浏览器中的,不必安装插件和库就可以直接使用它。

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

三者关系

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

版本关系