我正在尝试使用带有以下代码的Android Studio使用copyfrom方法将一个Float2变量数组传递给Renderscript。 IDE接受了整数的第一个示例,但是接下来的两个浮点数或浮点数都不是。 IDE将返回以下错误:
Cannot resolve method 'copyFrom(java.lang.Float[])'
和
Cannot resolve method 'copyFrom(java.lang.Float2[])'
对于正确的方法或语法的任何建议表示赞赏。
mRS = RenderScript.create(this);
int[] inputData1 = new int[10];
Float[] inputData2 = new Float[10];
Float2[] inputData3 = new Float2[10];
inputData1[0] = 1;
inputData2[0] = 1.0f;
inputData3[0].x = 1.0f;
inputData3[0].y = 1.0f;
Allocation mInAlloc1 = Allocation.createSized(mRS, Element.I32(mRS), 10, Allocation.USAGE_SCRIPT);
mInAlloc1.copyFrom(inputData1);
Allocation mInAlloc2 = Allocation.createSized(mRS, Element.F32(mRS), 10, Allocation.USAGE_SCRIPT);
mInAlloc2.copyFrom(inputData2);
Allocation mInAlloc3 = Allocation.createSized(mRS, Element.F32_2(mRS), 10, Allocation.USAGE_SCRIPT);
mInAlloc3.copyFrom(inputData3);
编辑:
我在Eclipse中尝试过相同的代码并得到一个稍微不同的错误:
The method copyFrom(BaseObj[]) in the type Allocation is not applicable for the arguments (Float[])
建议我将类型更改为BaseObj [],但是这样做IDE然后会抱怨我应该更改(返回)到Float,这似乎有点递归?
答案 0 :(得分:0)
在Java代码中没有本机表示的RenderScript类型稍微困难一些。处理矢量类型的最佳方法是“copyFromUnchecked”。因此,如果你有10x,float2的分配,你将创建一个20元素的java浮点数组。寻址将是[element * 2 + component]
复制例程的“未选中”变体执行较少的类型检查以允许这些副本。它比使用Float2数组的对象数组效率高得多。
我意识到重新阅读你的代码,问题是Float vs float。 RenderScript复制命令旨在处理基本数组,而不是对象数组。