2

我对 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 数组的“宽度”和“高度”,但只要“宽度”<>“高度”它就不起作用。所以它目前只适用于正方形。

可以做什么?

编辑:

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

4

1 回答 1

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);
于 2013-03-08T16:59:10.950 回答