WebGL 技术储备指南

WebGL 是 HTML 5 草案的一部分,可以驱动 Canvas 渲染三维场景。WebGL 虽然还未有广泛应用,但极具潜力和想象空间。本文是我学习 WebGL 时梳理知识脉络的产物,花点时间整理出来与大家分享。

示例

WebGL 很酷,有以下 demos 为证:

寻找奥兹国
赛车游戏
划船的男孩(Goo Engine Demo)

本文的目标

本文的预期读者是:不熟悉图形学,熟悉前端,希望了解或系统学习 WebGL 的同学。

本文不是 WebGL 的概述性文章,也不是完整详细的 WebGL 教程。本文只希望成为一篇供 WebGL 初学者使用的提纲。

Canvas

熟悉 Canvas 的同学都知道,Canvas 绘图先要获取绘图上下文:

var context = canvas.getContext('2d');

context上调用各种函数绘制图形,比如:

// 绘制左上角为(0,0),右下角为(50, 50)的矩形
context.fillRect(0, 0, 50, 50);

WebGL 同样需要获取绘图上下文:

var gl = canvas.getContext('webgl'); // 或 experimental-webgl

但是接下来,如果想画一个矩形的话,就没这么简单了。实际上,Canvas 是浏览器封装好的一个绘图环境,在实际进行绘图操作时,浏览器仍然需要调用 OpenGL API。而 WebGL API 几乎就是 OpenGL API 未经封装,直接套了一层壳。

Canvas 的更多知识,可以参考:

矩阵变换

三维模型,从文件中读出来,到绘制在 Canvas 中,经历了多次坐标变换。

假设有一个最简单的模型:三角形,三个顶点分别为(-1,-1,0),(1,-1,0),(0,1,0)。这三个数据是从文件中读出来的,是三角形最初始的坐标(局部坐标)。如下图所示,右手坐标系。

模型通常不会位于场景的原点,假设三角形的原点位于(0,0,-1)处,没有旋转或缩放,三个顶点分别为(-1,-1,-1),(1,-1,-1),(0,1,-1),即世界坐标。

绘制三维场景必须指定一个观察者,假设观察者位于(0,0,1)处而且看向三角形,那么三个顶点相对于观察者的坐标为(-1,-1,-2),(1,-1,-2),(0,1,-2),即视图坐标。

观察者的眼睛是一个点(这是透视投影的前提),水平视角和垂直视角都是90度,视野范围(目力所及)为[0,2]在Z轴上,观察者能够看到的区域是一个四棱台体。

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《WebGL编程指南》是一本介绍WebGL技术的经典书籍,它详细阐述了WebGL的原理、应用和实践,是WebGL开发必备的参考书。本书附带的源代码是学习和实践WebGL的重要材料,它涵盖了WebGL的各个方面,从基础的三维图形绘制到高级的光影渲染和复杂的交互效果。 源代码包含了多个示例程序,各个示例程序围绕着一个主题展开。例如,有些示例程序演示了如何绘制简单的三维图形,如立方体和球体,还有些示例程序演示了如何添加纹理和材质,以及如何实现跨浏览器的兼容性。 此外,本书中的源代码还包括了一些高级的示例程序,如阴影、反射和抗锯齿等。这些示例程序可以帮助读者深入理解WebGL的工作原理和实现方法,并在实践中掌握WebGL技术。 值得一提的是,本书的源代码是经过精心设计和优化的,它压缩和合并了多个文件,以提高程序的性能和加载速度。因此,读者在使用本书源代码时,需要按照书中指导的步骤进行安装和部署,以获得最佳的开发体验。 总之,本书的源代码是WebGL学习和实践的重要资源,它提供了丰富的示例程序和实战经验,帮助读者快速掌握WebGL技术,开发出优秀的WebGL应用程序。 ### 回答2: WebGL编程指南是一本关于WebGL技术的教材,涵盖了从基础知识到高级应用的内容。其中提供了多个实例,结合源代码,帮助读者快速掌握WebGL的编程技巧。 这本书的源代码非常有用,通过它可以理解WebGL的原理,并且快速搭建自己的WebGL应用程序。源代码中详细说明了各个组件的作用和用法,还提供了多种渲染器、着色器和纹理的实现方法,这些都对于初学者来说非常有价值。 WebGL编程指南源代码重点涵盖了三个方面:顶点缓冲对象、着色器和纹理。在顶点缓冲对象方面,它提供了多种创建和操作缓冲对象的实现方法,包括创建缓冲区、填充缓冲区、更新缓冲区等。在着色器方面,源代码中提供了包括简单着色器、光照着色器、Phong着色器在内的多种实现方法,这些着色器实现了不同的效果,读者可以根据需要自行选择。 最后是纹理,源代码提供了多种纹理类的实现方法,支持2D纹理、CubeMap纹理,以及多种纹理过滤和纹理映射方式。 总之,WebGL编程指南源代码提供了非常有价值的WebGL编程实践经验,对于从事WebGL开发的人员,特别是初学者,这是一份非常有意义的参考资料。 ### 回答3: 《WebGL编程指南》的源码是一本非常有用的资源,可以帮助读者更深入地理解WebGL编程技术。这本书的源码包括了许多有趣、实用的示例,可以帮助读者学会如何使用WebGL进行3D图形编程。 在掌握了基本的WebGL编程知识后,读者可以通过学习这些示例来深入了解WebGL技术,例如如何使用各种着色器、如何创建和渲染各种3D对象、如何进行照明和纹理映射等等。 同时,《WebGL编程指南》的源码也很容易上手。每个示例都有详细的注释和说明,使得读者可以很容易地理解代码的实现细节。读者可以将这些例子作为起点,自行修改和扩展,创造出更加有趣、独特的WebGL应用。 总之,《WebGL编程指南》的源码是非常有价值的,可以帮助广大编程爱好者、WebGL初学者甚至是资深的WebGL开发者,掌握更加深入的WebGL编程技术,为他们创造出更加精彩、创新的WebGL应用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值