Texture也是WebGL中重要的概念,使用起來(lái)也很簡(jiǎn)單。但有句話叫大道至簡(jiǎn),如果真的想要用好紋理,里面的水其實(shí)也是很深的。下面我們來(lái)一探究竟。
下面是WebGL中創(chuàng)建一個(gè)紋理的最簡(jiǎn)過(guò)程:
var canvas = document.getElementById("canvas");var gl = canvas.getContext("webgl");// 創(chuàng)建紋理句柄var texture = gl.createTexture();// 填充紋理內(nèi)容gl.bindTexture(gl.TEXTURE_2D, texture); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);// 設(shè)置紋理參數(shù)//gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);//gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);// 釋放gl.bindTexture(gl.TEXTURE_2D, null);
如果你覺(jué)得上面的這段代碼簡(jiǎn)單易懂,不妨在看看WebGL中提供的gl.glTexImage2D的重載方法:
void gl.texImage2D(target, level, internalformat, width, height, border, format, type, ArrayBufferView? pixels);void gl.texImage2D(target, level, internalformat, format, type, ImageData? pixels);void gl.texImage2D(target, level, internalformat, format, type, HTMLImageElement? pixels);void gl.texImage2D(target, level, internalformat, format, type, HTMLCanvasElement? pixels);void gl.texImage2D(target, level, internalformat, format, type, HTMLVideoElement? pixels);
一個(gè)再簡(jiǎn)單的紋理調(diào)用,在實(shí)際中也會(huì)有變