我正在使用forEach_root方法在Android上计算图片。
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;
这样可以正常工作,但是,由于可能存在大量数据(超过1800万像素需要处理),因此可能需要一些时间。 有没有可能获得RenderScript forEach-loop的当前进程?
答案 0 :(得分:1)
我假设“当前进程”表示你的状态(这样你就可以显示进度条或类似内容)。没有办法知道已经完成了多少工作,也没有办法知道开发人员可以看到多少工作。事实上,我认为我们实际上无法真正计算出这一点,因为你可以使用一个简单的if语句来查找该像素坐标,从而使内核实例的任何单个单元格显着延长。所以,我有两个潜在的建议,取决于您认为状态信息会给您带来什么:1)如果您正在尝试创建进度条并希望让用户知道您确实是这样,请使用微调器还在工作; 2)如果你需要这个用于同步,那么你以后用输入/输出分配做的任何事情都会等到内核完成(即你的copyTo操作将被适当地阻塞)。