RenderScript错误组合用法

时间:2014-10-15 20:50:07

标签: java android renderscript

我试图创建一个获取renderScript RGBA图像并返回带有字节值的矩阵的函数。

问题是它返回了我以下错误,我搜索了信息但找不到任何关于它的信息,我找到的唯一选择是输出是相同的类型,只将结果保存到其中一个通道(例如红色)。

错误:

10-15 16: 34: 35.006: E / AndroidRuntime (771): android.support.v8.renderscript.RSIllegalArgumentException: Invalid combination usage. 

RenderScript代码:

void rootTable(const uchar4 *v_in, uchar *v_out){
    *v_out = (int)rsGetElementAt_uchar(params, getIndexParams_Table(v_in->r>>3, v_in->g>>3, v_in->b>>3));
}

Java代码:

Allocation imageInAlloc = Allocation.createFromBitmap(r, bmp, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);

byte[] arrayParams = this.readParamByte(R.raw.params_table);
byte[] arrayColor = new byte[bmp.getWidth()*bmp.getHeight()];

Allocation params_table = Allocation.createSized(r, Element.I8(r), arrayParams.length);
Allocation dataOut = Allocation.createSized(r, Element.U8(r), bmp.getWidth(), bmp.getHeight()); 
params_table.copyFrom(arrayParams);
script.set_params(params_table);
script.forEach_rootTable(imageInAlloc, dataOut);

dataOut.copyTo(arrayColor);

该功能是正确的,因此进入和退出的失败率是distitnos但是没有办法做到这一点?

非常感谢!!

2 个答案:

答案 0 :(得分:0)

您上面报告的错误是否还有其他堆栈跟踪信息?另外,你改变了单词的顺序吗?我无法找到"无效的组合使用情况"在我们的代码库中的任何地方,但我确实发现"无效的使用组合" (遗憾的是,对于你所看到的其他内容仍然没有意义)。我发现至少有一个错误。你的" params"分配是I8类型,但是你将它作为uchar从中拉出来。这不起作用,所以你需要调用rsGetElementAt_int(),这样你就可以摆脱你的int转换。

答案 1 :(得分:-1)

如果有人遇到同样的问题,则renderScript会检查输入和输出是否为同一类型等。为避免这种情况,您必须修改ScriptC _" filename" .java,并查找forEach _&#34 ;功能"功能并删除以下内容:

// Verify dimensions
    Type tIn = ain.getType();
    Type tOut = aout.getType();
    if ((tIn.getCount() != tOut.getCount()) ||
        (tIn.getX() != tOut.getX()) ||
        (tIn.getY() != tOut.getY()) ||
        (tIn.getZ() != tOut.getZ()) ||
        (tIn.hasFaces() != tOut.hasFaces()) ||
        (tIn.hasMipmaps() != tOut.hasMipmaps())) {
        throw new RSRuntimeException("Dimension mismatch between input and output parameters!");
    }