アプリケーションのパフォーマンスを向上させるために、as3 コードを pixelbender コードに変換する方法を探しています。
この as3 コードは次のようになります。bytearray の Number 値をチャンク単位でスキャンします。このチャンクの長さが 100 の数字であるとしましょう。2 つの数字 (左と右) を読み取り、最大値を見つけようとします。私の bytearray の数値は PCM データであるため、何百万ものデータがあり、特に低スペックのマシンでは、このコードの実行に時間がかかることがよくあります。
これの全体的な目的は、波形をできるだけ速くレンダリングすることです。ピクセルベンダーについてはほとんど知りません。私は基本的に新しいファイルを作成し、そのシェーダージョブをフラッシュで作成できますが、これにアプローチする方法が本当にわかりません...
どうすればpixelbenderを渡すことができるのか、本当に尋ねていると思います
A)数字の「チャンク」で、2つの最大値(左と右)を返すようにします
また
B)バイト配列全体と、ピクセルベンダーにチャンク処理をしてもらいます
var spritePixelIndex:Number=0;
var spriteSize:Number;
spriteSize=_sizes[_numberOfZoomLevels - 1];
blockSize=Math.floor(_pcmLength / spriteSize);
chunksize=blockSize * 100;
for (var i:int=0; i < chunksize; ++i)
{
if (_pcmData.bytesAvailable)
{
var la:Number=_pcmData.readFloat();
var ra:Number=_pcmData.readFloat();
var l:Number=la > 0.0 ? la : -la;
var r:Number=ra > 0.0 ? ra : -ra;
++_divCount;
var ml:Number=0;
var mr:Number=0;
var a_ml:Number=ml > 0.0 ? ml : -ml;
var a_mr:Number=mr > 0.0 ? mr : -mr;
ml=a_ml > (l) ? ml : l;
mr=a_mr > (r) ? mr : r;
}
}