2

型付き RS 割り当てを次のように作成します。

mRS = RenderScript.create(mContext);
Element.Builder eb = new Element.Builder(mRS);
eb.add(Element.F32_3(mRS), "xyz");
eb.add(Element.F32_2(mRS), "uv");
Element eStride_XYZUV = eb.create();

mInAllocation = Allocation.createSized(mRS, eStride_XYZUV, animLand.getArray().length / 5);
mOutAllocation = Allocation.createSized(mRS, eStride_XYZUV, animLand.getArray().length / 5);

animLand.getArray()の配列ですfloat。データを入力割り当てにコピーできます。

mInAllocation.copyFromUnchecked(animLand.getArray());

ただし、この方法で割り当てからデータを取得しようとすると:

mOutAllocation.copyTo(animLand.getArray());

例外が発生します:

android.renderscript.RSIllegalArgumentException: 32 bit float source does not match allocation type null

Allocationカスタムの配列を使用して出力からデータにアクセスするにはどうすればよいElementですか? 配列/ビットマップにコピーする方法はありますが、プリミティブElement型のみです。

プリミティブF32型を使用しても機能しますが、型付きデータを使用したい:

mInAllocation = Allocation.createSized(mRS, Element.F32(mRS), animLand.getArray().length);
mOutAllocation = Allocation.createSized(mRS, Element.F32(mRS), animLand.getArray().length);
...
mInAllocation.copyFromUnchecked(animLand.getArray());
...
mOutAllocation.copyTo(animLand.getArray());
4

0 に答える 0