1

Android で画像を計算するために forEach_root メソッドを使用しています。

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 ループの現在のプロセスを取得する可能性はありますか?

4

1 に答える 1

1

「現在のプロセス」とは、ステータスを意味していると思います(プログレスバーなどを表示できるようにするため)。どれだけの作業が行われたか、開発者に見える残りの量を知る方法はありません。実際、ピクセル座標を探す単純な if ステートメントを使用して、カーネル インスタンスの任意の 1 つのセルを大幅に長くすることができるため、実際にそれを正確に計算できるとは思いません。そこで、ステータス情報から得られると思われるものに応じて、2 つの提案があります。まだ働いている; 2) 同期のためにこれが必要な場合、後で入力/出力の割り当てを行うと、カーネルが完了するまで待機します (つまり、

于 2012-12-04T17:13:31.290 に答える