2012-12-04 3 views
1

forEach_root 메서드를 사용하여 Android에서 이미지를 계산하고 있습니다. 방대한 양의 데이터 (이상 18 만 화소가 처리하는)이있을 수RenderScript 진행하기

RenderScript RS=RenderScript.create(context); 

Allocation inPixelsAllocation = Allocation.createFromBitmap(RS, inBitmap, 
      Allocation.MipmapControl.MIPMAP_NONE,Allocation.USAGE_SCRIPT); 
Bitmap out=Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888); 
Allocation outPixelsAllocation = Allocation.createFromBitmap(RS, out, 
Allocation.MipmapControl.MIPMAP_NONE,Allocation.USAGE_SCRIPT); 

mScript.forEach_root(inPixelsAllocation,outPixelsAllocation); 
outPixelsAllocation.copyTo(out); 
return out; 

이 잘 작동하지만, 그러나, 이후 시간이 좀 걸릴 수 있습니다. RenderScript forEach 루프의 현재 프로세스를 가져올 수 있습니까?

답변

1

상태를 의미하는 "현재 프로세스"로 가정합니다 (진행률 막대 또는 이와 비슷한 것을 표시 할 수 있도록). 얼마나 많은 작업이 완료되었는지, 개발자가 볼 수있는 것이 얼마나 남아 있는지를 알 수있는 방법이 없습니다. 실제로 픽셀 좌표를 찾는 간단한 if 문으로 커널 인스턴스의 단일 셀을 상당히 길게 만들 수 있기 때문에 실제로 실제로 계산할 수 있다고 생각하지 않습니다. 따라서 상황 정보가 당신에게 무엇을 주겠다고 생각 하느냐에 따라 두 가지 잠재적 인 제안이 있습니다. 1) 진행률 표시 줄을 만들려는 경우 회 전자를 사용하고 사용자가 실제로 있음을 알려주고 싶습니다 아직도 일하고있다. 2) 동기화를 위해 이것을 필요로한다면, 나중에 입출력 할당으로하는 일은 커널이 완료 될 때까지 기다릴 것입니다 (즉, copyTo 작업이 적절하게 차단 될 것입니다).

+0

좋아, 나는 거의 이것을 생각했다. 그러나 프로세스가 매우 오래 걸릴 수 있기 때문에 Spinner를 표시하는 것은 매우 사용자 친화적이지 않습니다. 그리고 RenderScript는 거대한 데이터 세트를 처리하기 위해 설계 되었기 때문에 어떤 종류의 커널도 준비가되어있는 어떤 시점에서는 적어도 어떤 종류의 콜백이 있어야합니다. 정말 기대! – TSGames

관련 문제