Android 如何将Float2数组从Java传递到Renderscript

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

我正试图通过使用AndroidStudio的copyfrom方法将Float2变量数组传递给Renderscript,代码如下。IDE接受整数的第一个示例,但浮点或浮点2的下两个示例不接受。IDE返回以下错误:

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[])