本文标题:WebGL 第一课:核心目标
我们要开始学习 WebGL 技术了, 当我们做好准备之前,我们首先问一个问题:
WebGL 能帮我们做的到底是什么?
- 有读者说了,我要做游戏
- 又来一位,我要做动画
- 我要实现特效
- 等等等等等等 那么我们不妨再换一个问题:
上面说的这些目标都是在做什么?
答:在电脑或者手机显示屏的某一块地方,决定哪个像素点
在什么时间
是什么颜色
。无他尔。
确实是这样,所有上面说的那些大目标,都是在屏幕上决定像素点的颜色而已。说实在的,这与绘画者拿一只笔在纸上画画,没什么区别。绘画者可不就是在决定纸上的什么位置是什么颜色吗,就这么简单。
"这还要你说吗,说点有用的吧!" --- 来自某读者的嘲讽
当然,我要说点有用的了,我们先把什么时间
这个关键点放到后面。那么回答就变成了:
决定哪个像素点是什么颜色
。
- 哪个像素点:我们用数学来表示:可不就是 (x y) 坐标么。
- 什么颜色: 我们还用数学来表示:可不就是 (r g b) 颜色么。
问题显而易见了:
决定屏幕的(x y)处的像素是什么(r g b)颜色
。
好的, WebGL 能提供给我们最终的用途就是上面这个表述。所有的复杂的问题,都是以这个目标来扩展开来的。
当学习过程中实在觉得绕不过去的时候,请谨记:
我tm到底要在哪个(x y)像素点,画tm什么(r g b) 颜色
!
本文正文结束,以下是答疑部分
- 小丫丫问:WebGL和画画相似在哪?
答:电脑屏幕就是纸,WebGL 就是笔。然后这么理解就行了。
- 小能能问:我要画 3D 的啊,你凭什么没有 z 坐标,只有(x y)???
答:你左看右看上看下看,请问你的电脑或者手机屏幕是不是一个类似于纸的这么一个薄片,你能做的,就是在这个薄片上画画,无论如何,你也不可能在电脑屏幕上画出一个 3D 的物体的,就算看上去像 3D 的物体,那也只是一个投影而已。
对,这就是我强调的,最终我们关心的结果,还真就是 2D 的,至于 3D ,那是一个业务性的东西而已。 WebGL 不关心这些业务性的东西。 还拿画画做比方,我可以拿纸来写字,也可以用来设计图纸,也可以用来写作业,我要干什么,跟纸和笔都没关系。笔唯一能做的,就是在纸上的某一个位置印上一个颜色而已。
再次强调:你就只要关心在什么(x y)像素
,画什么(r g b)颜色
。只要把这件事,搞定了,你的任务就完成了。
- 小瓜瓜问:我当然知道我要画什么了,关键是不会画:我要在
屏幕中间画一个半径1的圆
,请问我如何用 WebGL 来做这件事?
答:将你的需求,转换成数学描述
,然后利用 WebGL 的api
进行操作即可。
- 小瓜瓜:凸(艹皿艹 )呱呱呱???