WebGLのテクスチャに変換しようとしているUint32Arrayがあります。これを行うには、キャンバスにRGBA値として配列を書き込み、キャンバスからbase64でエンコードされたPNGを取得して、テクスチャとして送信します。
ピクセル値を0のアルファに設定すると、PNGへの変換時に対応するRGBチャネルもゼロになります。これは実装の詳細ですか?HTML5以外のプログラムでPNGを作成する場合、(255,255,255,0)の(RGBA)4つ組を作成できますか?アルファ値1を使用してみましたが、他のすべてのチャネルはそのまま残っているため、これは事前に乗算されたアルファの問題ではありません。
この効果を再現するためのJavaScriptコードを次に示します。
var img = new Image();
var canvasObj = $('<canvas width="1" height="1"></canvas>');
var context = canvasObj[0].getContext('2d');
var imgd = context.getImageData(0,0,1,1);
var pix = imgd.data;
pix[0]=255; pix[1]=255; pix[2]=255; pix[3]=0;
context.putImageData(imgd,0,0);
img.src = canvasObj[0].toDataURL("image/png");
context.drawImage(img,0,0);
var imgd2 = context.getImageData(0,0,1,1);
var pix2 = imgd2.data;
pix2はすべて0になります。
ありがとう!