2

webGL に奇妙な問題があります。

アルファチャンネルのみが重要な、動的に生成されたテクスチャを使用しています。コードは次のとおりです。

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 に答える