2016-08-03 3 views
2

私はWebGLを使用していて、複数の画像からテクスチャを作成しようとしています。これらはすべてフロート配列で表現され、RGBAに変換されます。WebGLテクスチャを作成してデータの一部を切り捨てます。

は、ここに私のコードです:

var dataTexture = new Uint8Array(array.length*4); 
for(var i=0; i<array.length; i+=4) 
{ 
    dataTexture[i] = 255*parseFloat(array[i/4]); 
    dataTexture[i+1] = 255*255*parseFloat(array[i/4]); 
    dataTexture[i+2] = 255*255*255*parseFloat(array[i/4]); 
    dataTexture[i+3] = 255; 
} 

gl.bindTexture(gl.TEXTURE_2D, self.mTexture); 
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 512, 512, 0, gl.RGBA, gl.UNSIGNED_BYTE, dataTexture);  
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); 
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); 

gl.drawArrays(gl.TRIANGLES, 0, 6); 

、これが現れる画像です:

が、私は理想的な画像を投稿することはできませんが、黒のストリップの全ての間に何かがあるはずです。私は次のコードのように、それは動作しますが、値をプリセットしようとすると、私は理解していない何

は次のとおりです。

これが現れるイメージです。

これは理想的な出力ではなく、設定値の動作例です。

なぜ画像が途中で消えてしまったのですか?それを修正するために何ができますか?ありがとうございました!

+0

'i

+0

@LJᛃありがとう、そんなに!あなたがこれを答えとして置くなら、私は正しい印を付けるでしょう! :) –

答えて

0

あなたがここで何をしようとしているのかは不明です。あなたはUint8Array要素に入れることができます

dataTexture[i] = 255*parseFloat(array[i/4]); 
dataTexture[i+1] = 255*255*parseFloat(array[i/4]); 
dataTexture[i+2] = 255*255*255*parseFloat(array[i/4]); 
dataTexture[i+3] = 255; 

最大値は、あなたが16581375によって、その後65025によってそれらを乗算しているので、あなたのarrayエントリの範囲だだから何255です。

また、arrayのテキストですか?そうでなければ、なぜあなたはparseFloatを呼び出していますか?

関連する問題