我正在寻找一些帮助将as3代码转换为pixelbender代码,以提高我的应用程序的性能。帮助将此as3代码转换为像素弯曲代码
这个as3代码如下。我扫描块中的一个bytearray的Number值。可以说,这个块长度是100个数字我读了2个数字(左和右),并尝试找到最大值。我的bytearray中的数字是PCM数据,因此有数百万个数据,而且这些代码通常需要很长时间才能执行,特别是在低规格机器上。
这样做的目的是尽可能快地呈现波形。我对像素弯曲机知之甚少。我基本上可以做一个新的文件,并创建它在Flash中的ShaderJob但我真的不确定如何处理这个...
我想我真的问我如何通过pixelbender要么
一)一个数字的“块”,并把它传给我回2个最大值(左,右)
或
B)我的整个字节组,并得到Pixel Bender的做分块的东西对我来说
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;
}
}
我认为我的主要问题是有太多的计算正在进行,主线程正在获取挂断电话,一切都停止了。 如果有人可以让我看看pixelbender代码接受2个数字,并返回最大我可以尝试调用,而不是在我的块循环中进行计算,看看是否有任何性能表现 – dubbeat 2010-07-09 11:38:58
也我认为evaluatePixel方法基本上是一个循环。因此,我将数据作为字节流传递或以位图的形式表示,它可以做到这一点? – dubbeat 2010-07-09 11:46:54
同样,是像素弯曲者在每个像素或向量条目上运行内核,但是它每次运行代码时都不知道其他像素中发生了什么,并且无法传递信息除外用于返回已更改的像素。 如果您使用炼金术,该代码可以在后台运行,并且不会阻止主程序的执行。 – Quasimondo 2010-07-09 12:11:54