处理复杂的三维模型
多个简单模型组成的复杂模型,其之间存在连接关系,例如“A部件带动B部件运动”。
三维模型之间并没有真正连接在一起。上层的变化时需要施加其下层模型同样的模型矩阵,这样,上层模型就能跟随下层模型变换。
通过索引绘制物体
将三角形顶点索引写入缓冲区,并绑定到gl.ELEMENT_ARRAY_BUFFER
使用gl.drawElements()
进行绘制。其对每个索引值,从绑定到gl.ARRAY_BUFFER
的缓冲区中获取顶点信息,并传递给attribute变量,执行一次顶点着色器。
可以重复利用顶点信息,控制内存开销。
索引值无法将颜色区分开,颜色依赖于顶点,所以如果单个点在不同表面上时,需要创建多个具有相同坐标不同颜色的顶点。
着色器与着色器程序对象
着色器对象:管理一个顶点着色器或者一个片元着色器。每个着色器都是一个着色器对象。
程序对象:管理着色器对象的容器。一个程序对象必须包含一个顶点着色器与一个片元着色器。
创建和初始化着色器
1 | gl.createShader(type) //1.创建着色器对象 |