如何计算传递给renderscript文件的数组

时间:2016-12-13 19:37:24

标签: java android renderscript android-renderscript

我想在android中创建一个renderscript,其中一个数组被传递给.rs文件。在这些值上进行一些计算并将其发送回用户。

我对renderscript的理解很少,所以我写的也可能完全错误。请帮帮我。

Android活动     公共类RenderTemp扩展了Activity {

    private RenderScript mRS;
    private ScriptC_snow mScript;
    int[] indices;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.render);
        indices = new int[2];
        indices[0] = 1;
        indices[1] = 2;
        createScript();
    }

    private void createScript() {
        mRS = RenderScript.create(this);
        Allocation mIN = Allocation.createSized(mRS, Element.I32(mRS), indices.length);
        mIN.copyFrom(indices);
        mScript = new ScriptC_snow(mRS);
        mScript.forEach_root(mIN);
        mIN.copyTo(indices);
    }
}

snow.rs

#pragma version(1)
#pragma rs java_package_name(#package name)


int32_t *mIN;

void __attribute__((kernel)) root(int32_t in)
{
    in = in + 2;
}

1 个答案:

答案 0 :(得分:1)

修改""在你的内核中不会导致任何更新。您可以更改它,以便root()函数的返回值也为int32_t。然后做"返回+ 2;"。最后,您可以将输入和输出的mIN传递给forEach(所以" mScript.forEach_root(mIn,mIn);")。即使这对您有用,我强烈建议您将输入和输出分配分开用于任何实际工作,因为像这样的别名输入/输出可能会阻止编译器优化更复杂的代码。