2014 / 02 / 20

关于《WebGL编程指南》

关于本书

WebGL Programming Guide这本书出自任职于索尼的图形学专家松田浩一(Kouichi Matsuda)博士,和任职于卑诗大学的Rodger Lea博士之手。这本书详细地讲解了WebGL原生API的几乎每个细节,讲解了三维图形学的诸多基础知识,对于没有图形学基础却又希望探索WebGL领域的前端工程师们,是一本不可多得的好书。感谢电子工业出版社博文视点编辑部的任晓露编辑对我的信任,使我得以将此书翻译为中文。

链接:亚马逊 京东

本页面是此书的中文版《WebGL编程指南》的主页和勘误页,如我在「译者序」中所述,读者如果要提出勘误,或有任何建议和想法,都可以在本页面的评论中反馈。

源码下载

鉴于国内的特殊环境,原作者的站点无法登上,因此无法下载本书中示例程序的源码。我将程序源码放在国内可以访问的网盘上,供读者下载。

百度网盘

推荐序

国内的WebGL先行者,HiWebGL社区和Lao3D的创始人郝稼力为本书的中文版作了推荐序。

2011年的夏天,当我开始尝试翻译来自LearningWebGL.com网站教程的时候,WebGL在中国的天空可以说是刚蒙蒙亮。那时我们已经看得太多了国外的Demo,我们更想学习如何亲手制作出这些Demo。当我开始下手时,才发现自己不知不觉间跳进了一个大坑。正如我之前反复强调过的,WebGL原生API是一种非常低等级的接口,就好像一个只有“+”按钮的计算器,如果你想做2X3的运算,只能重复两次加法运算得以实现。数学和图形学的门槛浇灭了了对WebGL充满憧憬的前端程序员的激情,而JavaScript语言本身的孱弱又让图形程序员不屑一顾。因此从零开始学习WebGL实在是一件让人头痛的事情,每天都有一种明天就要开学但是暑假作业还没做完的感觉。

在Three.js、Oak3D、PhiloGL等一批图形库的“引诱”下,很多人放弃了基础知识,直接开始操控这些成熟的WebGL 3D引擎。其中有的人成功了,但是据我了解大部分的人都在初期的风光得意之后,又重新陷入了泥潭,于是不得不再次回到学习WebGL原生API的道路上;而那些一直坚守WebGL原生API学习的人,在经历了一开始的艰苦岁月,战胜了面对他人突飞猛进而自己仍在画三角形的挫败感之后,现在已经成为了HiWebGL社区的中流砥柱。因此在看到这本书后,我十分愿意并有些许兴奋地向广大WebGL学习者推荐本书,你可以在流畅的文字描述、大量详实的图例图解中,游刃有余地在WebGL原生API中斩荆披棘,不断前进。这种感觉不再是焦躁不安,而是让我想起了上大学时的青葱岁月,也希望你能在阅读中获得不一样的新的学习体验。

最大的HTML5&WebGL中文社区创始人 国内第一个WebGL商用网站Lao3D.com创始人

——郝稼力

译者序

JavaScript的野心越来越大了。在过去的十年中,这项技术逐渐把报纸一般的网页变成了能与客户端程序相媲美的Web应用。在接管了用户界面、网络通信、多媒体、甚至数据存储这些原本由桌面程序负责的功能后,JavaScript终于把触手伸向了最为复杂的领域之一——三维图形渲染,WebGL因此而诞生。

学习WebGL,仅有JavaScript功底是不够的,因为WebGL的API非常低级,如果不对图形学中的诸多概念比较了解,是没办法熟练操作这些API,并知道“你究竟在做些什么”。互联网上大部分WebGL教程忽视了这一点,所以我最初学习WebGL时异常艰辛,经常发生“效果出来了,但不知为什么”的情形。

这本书的好处,就是它系统详细地讲述了着色器、渲染管线、模型变换、投影矩阵这些三维图形学的基本概念,对于没有图形学基础的前端众实在太适合了。这本书不厌其烦地讲述了几乎每一个API函数(甚至每一个参数)的作用,手把手地教你如何编写着色器,涉及了无数与WebGL相关的细节。这本书相当基础,它不会让你在很短的时间里,就(往往借助某些库)渲染出精美绝伦的场景;事实上,直到本书篇幅过半,它才会真正地考虑“三维”这件事。但是请相信我,仔细研究书中前半部分的基础知识,会使你受益匪浅。但这本书也并不简单,最后一章“高级技术”会让你大开眼界。你会从原理上理解,如何使模型在地面上投下阴影,如何绘制半透明的物体,如何在场景中制造雾化效果,如何将渲染的结果作为纹理使用等等。也许你已经知道如何做,但这本书却告诉了你,为什么要这样做。

总之,如果你是一个缺乏图形编程经验的Web开发者,这是一本深入浅出,不可多得的案头好书。山雨欲来,如果现在还不开始进行技术储备,更待何时呢?

最后,我要感谢电子工业出版社的任晓露编辑,让我在第一时间读到如此精彩的作品。水平所限,纰漏在所难免,如果要提交本书的勘误,或者对本书有任何想法或建议,可以在本书的主页上留言( http://xieguanglei.com/post/2014-04-15-WebGL编程指南.html )。

谢光磊

2014年4月