WebGL:数据到非方形alpha纹理

时间:2013-03-03 20:13:01

标签: javascript webgl textures

我对webGL有一个奇怪的问题。

我正在使用动态生成的纹理,其中只有alpha通道很重要。 这是代码:

var texture  = new Uint8Array(ar); // ar is my array
gl.bindTexture(gl.TEXTURE_2D, this.transparencyTexture);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.ALPHA, array.length, array[0].length, 0, gl.ALPHA, gl.UNSIGNED_BYTE, texture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);   

我总是使用POT数组'“width”和“height”但是每当“width”<> “高度”它不起作用。所以它目前只适用于正方形。

可以做些什么?

编辑:

http://jsfiddle.net/SergeJcqmn/EAmjU/9/

1 个答案:

答案 0 :(得分:1)

在jsfiddle中,js的第76行不正确:

ar.push(array[x][(array.length - 1) - y] ?  128 : 0);

我相信这应该是:

ar.push(array[x][(array[0].length - 1) - y] ?  128 : 0);