WebGL编程指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

WebGL的起源

在个人计算机上使用最广泛的两种三维图形渲染技术是Direct3D和OpenGL。Direct3D是微软DirectX技术的一部分,是一套由微软控制的编程接口(API),主要用在Windows平台;而OpenGL由于其开放和免费的特性,在多种平台上都有广泛地使用:它可以在Macintosh或Linux系统的计算机、智能手机、平板电脑、家用游戏机(如PlayStation和Nintendo)等各种电子设备上使用。Windows对OpenGL也提供了良好的支持,开发者也可以用它来代替Direct3D。

OpenGL最初由SGI(Silicon Graphics Inc)开发,并在1992年发布为开源标准。多年以来,OpenGL发展了数个版本,并对三维图形开发、软件产品开发,甚至电影制作产生了深远的影响。写这本书时,OpenGL桌面版的最新版本为4.3。虽然WebGL根植于OpenGL,但它实际上是从OpenGL的一个特殊版本OpenGL ES中派生出来的,后者专用于嵌入式计算机、智能手机、家用游戏机等设备。OpenGL ES于2003~2004年被首次提出,并在2007年(ES 2.0)和2012年(ES 3.0)进行了两次升级,WebGL是基于OpenGL ES 2.0的。这几年,采用OpenGL ES技术的电子设备的数量大幅增长,如智能手机(iPhone和安卓)、平板电脑、游戏机等。OpenGL ES成功被这些设备采用的部分原因是,它在添加新特性的同时从OpenGL中移除了许多陈旧无用的旧特性,这使它在保持轻量级的同时,仍具有足够的能力来渲染出精美的三维图形。

图1.4显示了OpenGL、OpenGL ES 1.1/2.0/3.0和WebGL的关系。由于OpenGL本身已经从1.5发展到了2.0,再到4.3,所以OpenGL ES被标准化为特定版本OpenGL(OpenGL 1.5和OpenGL 2.0)的子集。

图1.4 OpenGL、OpenGL ES 1.1//2.0/3.0和WebGL之间的关系

如图1.4所示,从2.0版本开始,OpenGL支持了一项非常重要的特性,即可编程着色器方法(programmable shader functions)。该特性被OpenGL ES 2.0继承,并成为了WebGL 1.0标准的核心部分。

着色器方法,或称着色器,使用一种类似于C的编程语言实现了精美的视觉效果。本书将一步步阐述着色器,帮助你快速掌握WebGL。编写着色器的语言又称为着色器语言(shading language),OpenGL ES 2.0基于OpenGL着色器语言(GLSL),因此后者又被称为OpenGL ES着色器语言(GLSL ES)。WebGL基于OpenGL ES 2.0,也使用GLSL ES编写着色器。

OpenGL规范的更新和标准化由Khronos组织(一个非盈利的行业协会,专注于制定、发布、推广多种开放标准)负责。2009年,Khronos建立了WebGL工作小组,开始基于OpenGL ES着手建立WebGL规范,并于2011年发布了WebGL规范的第1个版本。本书主要基于第1版的WebGL规范编写,后续更新目前都是以草案的形式发布,如有需要,也可参考1