仍然是探究如何用html5+webGL实现三维街景。本文的主题是如何给一个三维模型贴多张纹理,为何会有多张:因为是网络应用,就必须得考虑网络带宽的问题,如果一张纹理图片不经处理直接从服务器传输到客户端,速度会很慢,为了解决这个问题,我们必须得把一张完整的纹理图片切割成多张,这就引出了今天的主题:如何把切割后的多张纹理在三维模型上进行拼贴?我们知道WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了;
为简单起见,我们使用一个立方体作为我们的三维模型,为这个立方体的六个面贴上不同的纹理。
原理:
1.生成立方体的顶点坐标数组,代码:
cubeVertexPositionBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer);
vertices = [
// Front face
-1.0, -1.0, 1.0,
1.0, -1.0, 1.0,
1.0, 1.0, 1.0,
-1.0, 1.0, 1.0,
// Back face
-1.0, -1.0, -1.0,
-1.0, 1.0, -1.0,
1.0, 1.0, -1.0,
1.0, -1.0, -1.0,
// Top face
-1.0, 1.0, -1.0,
-1.0, 1.0, 1.0,
1.0, 1.0, 1.0,
1.0, 1.0, -1.0,
// Bottom face
-1.0, -1.0, -1.0,
1.0, -1.0, -1.0,
1.0, -1.0, 1.0,
-1.0, -1.0, 1.0,
// Right face
1.0, -1.0, -1.0,
1.0, 1.0, -1.0,
1.0, 1.0, 1.0,
1.0, -1.0, 1.0,
// Left face
-1.0, -1.0, -1.0,
-1.0, -1