Android 如何将Float2数组从Java传递到Renderscript
我正试图通过使用AndroidStudio的copyfrom方法将Float2变量数组传递给Renderscript,代码如下。IDE接受整数的第一个示例,但浮点或浮点2的下两个示例不接受。IDE返回以下错误:Android 如何将Float2数组从Java传递到Renderscript,android,renderscript,Android,Renderscript,我正试图通过使用AndroidStudio的copyfrom方法将Float2变量数组传递给Renderscript,代码如下。IDE接受整数的第一个示例,但浮点或浮点2的下两个示例不接受。IDE返回以下错误: Cannot resolve method 'copyFrom(java.lang.Float[])' 及 如果您对正确的方法或语法有任何建议,我们将不胜感激 mRS = RenderScript.create(this); int[] inputData1 = ne
Cannot resolve method 'copyFrom(java.lang.Float[])'
及
如果您对正确的方法或语法有任何建议,我们将不胜感激
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,这似乎有点递归?在Java代码中没有本机表示的RenderScript类型稍微困难一些。处理向量类型的最佳方法是“copyFromUnchecked”。因此,如果您有一个10x float2的分配,那么您将创建一个20元素的java float数组。寻址将是[元素*2+组件] 复制例程的“未选中”变体执行更少的类型检查以允许这些复制。与使用Float2数组相比,它的效率要高得多
我意识到重新阅读你的代码,问题是Float vs Float。RenderScript copy命令设计用于处理基元数组,而不是对象数组 谢谢你的回复。你是说复印件吗?我确实试过了,但在IDE中仍然有相同的错误。浮动情况也一样,但目标数组大小保持不变。我编辑了答案,我想你的浮动与浮动也是不同的。
The method copyFrom(BaseObj[]) in the type Allocation is not applicable for the arguments (Float[])