Loading
toma77
This is a live streamed presentation. You will automatically follow the presenter and see the slide they're currently on.
孙彬
WebGL是基于OpenGL ES2.0的Web标准,可以通过HTML5 Canvas元素作为DOM接口访问。
。。。
在3D场景的开发过程中会涉及到非常多的计算过程(颜色、位置等),为了提高效率,使用了硬件加速,这个时候GPU的强大计算能力得到了运用。但是,怎样告诉它正确执行相关计算逻辑呢?答案是着色器。着色器告诉相关计算单元做什么,而着色器语言(GLSL ES)来告诉它们怎么做。
我们的js,是跑在浏览器里的语言。而GLSL,它是跑在显卡里面的,它需要手动使用js去调用WebGL编译它的方法,然后变成二进制包,然后让浏览器把它塞入显卡里,最后才能够使用。
所以WebGL绘制比js去绘制的好处在于,WebGL占用的是显卡里的资源,并不过多占用内存,所以性能远高于canvas2D。
JavaScript传入数据给webGL系统,数据会是以下两种:
顶点着色器(vertex shader)执行,它是一段使用glsl es语言编写的小程序片段,做了以下事情:
简单的说就是将顶点着色器最终计算的顶点坐标连线,组成点、线、面等几何图元。具体是画哪种图元是通过JavaScript传入的图元信息决定的。webGL能画的图元只有点、直线段、三角形三种,图元装配环节就是将复杂的图形分割成一个个的点、直线段、三角形。
图元装配出来的几何图形被打散成一个个的像素,这个过程叫光栅化。光栅化后的像素才会被着色。
片元着色器(fragment shader)执行,和顶点着色器一样,也是一段glsl es语言编写的小程序片段。它会将光栅化后的像素逐个着色,这个过程在颜色缓冲区中进行:
......
照相机