내 응용 프로그램의 성능을 향상시키기 위해 as3 코드를 pixelbender 코드로 변환하는 데 도움이 필요합니다.이 as3 코드를 픽셀 벤더 코드로 변환하는 데 도움이됩니다.
이 as3 코드는 다음과 같습니다. bytearray의 Number 값을 청크로 스캔합니다. 이 덩어리 길이가 100 개의 숫자이고 2 개의 숫자 (왼쪽 및 오른쪽)를 읽고 최대 값을 찾으려고합니다. 내 bytearray의 숫자는 PCM 데이터이므로 수백만 개가 있으며이 코드는 특히 저사양 컴퓨터에서 실행하는 데 오랜 시간이 걸릴 수 있습니다.
이 모든 목적은 가능한 한 빨리 파형을 렌더링하는 것입니다. 픽셀 벤더에 대해서는 거의 알지 못합니다. 나는 기본적으로 내가 정말 pixelbender을 통과 어떻게 부탁 해요 추측 ...
을 새 파일을 플래시에서 그것의 ShaderJob이를 만들 수 있지만이 접근하는 방법을 정말 확실 해요 할 수 있습니다
) 숫자의 "덩어리"하고
나를 위해 청크 물건을 할 수있는 픽셀 벤더를 다시 바로이 개 최대 값 (왼쪽)또는
B) 내 전체 된 ByteArray 날을 전달하고받을 수
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;
}
}
주된 문제는 주 스레드가 너무 많은 계산이 진행되었다는 것입니다. 끊어지고 모든 것이 중단되었습니다. 누군가 2 픽셀 수를 받아들이고 가장 큰 값을 반환하는 픽셀 베더 코드를 표시 할 수 있다면 청크 루프에서 계산을 수행하는 대신 그 값을 호출 해 볼 수도 있습니다. 성능 성능이 – dubbeat
인지 여부는 evaluatePixel 메서드가 기본적으로 루프라고 생각합니다. 따라서 데이터를 bytearry로 전달하거나 트릭을 수행 할 수있는 비트 맵으로 표시 할 수 있습니까? – dubbeat
다시 말하지만 픽셀 벤더는 전달한 각 픽셀 또는 벡터 항목을 통해 커널을 실행하지만 코드를 실행할 때마다 다른 픽셀에서 진행되고있는 작업에 대해 알지 못하며 예외를 제외하고 정보를 전달할 방법이 없습니다. 변경된 픽셀을 돌려주는 Alchemy를 사용하면 코드가 백그라운드에서 실행될 수 있으며 주 프로그램의 실행을 차단하지 않습니다. – Quasimondo