1.创建纹理对象的步骤
1.创建纹理对象(gl.createTexture()
)
2.开启纹理单元(gl.activeTexture(gl.TEXTURE0)
)
3.向target绑定纹理对象(gl.bindTexture(gl.TEXTURE_2D,texture)
)
4.配置纹理参数(gl.textParameteri(gl.TEXTURE_2D,gl_TEXTURE_MIN_FILTER,gl.LINEAR)
)
5.配置纹理图像(gl.texImage2D(gl.TEXTURE_2D,0,gl.RGB,gl.UNSIGNED_BYTE,image)
);
2.纹理对象的使用
uniform sampler2D u_sampler;
varying vec2 v_TexCoord;//由片元着色器传入纹理坐标
gl_FragColor=texture2D(u_sampler,v_TexCoord);
var u_sample=gl.getUniformLocation(gl.program,'u_sample');
//创建纹理对象
//将0号纹理传给着色器
gl.uniform1i(u_sample,0)
3.函数说明
1.gl.activeTexture(gl.TEXTURE0),也有gl.TEXTURE0...gl.TEXTURE7,通过纹理单元的机制来同时使用多个纹理,默认情况webgl最少支持8个纹理单元
2.gl.bindTexture(gl.TEXTURE_2D,texture),gl.TEXTURE_2D二维纹理。也有gl.TEXTURE_CUBE_MAP立方体纹理
3.gl.textParameteri(gl.TEXTURE_2D,gl_TEXTURE_MIN_FILTER,gl.LINEAR),可以重复多次配置多个参数。可配置的参数主要有:gl.TEXTURE_MAG_FILTER,放大方法,gl.TEXTURE_MAG_FILTER,缩小方法,指纹理图像大小与要贴合的表面大小不一样时如何采样可取gl.NEAREST最近像素的值,gl.LINEAR周围四个像素加权平均值。
gl.TEXTURE_WRAP_S,纹理左右填充,gl.TEXTURE_WRAP_T,纹理上下填充,可取参数gl.REPEAT:平铺纹理,gl.MIRRORED_REPEAT:镜面对称。gl.CLAMP_TOEDGE:使用纹理边缘值