2016-12-13 40 views
0

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

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

Android的活动 公共类RenderTemp “在” 您的内核中不会造成任何得到更新延伸活动{

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

修改。你可以改变它,这样你的root()函数也有一个返回值int32_t。然后做“返回+2;”。最后,你可以将mIN输入和输出都传递给forEach(所以“mScript.forEach_root(mIn,mIn);”)。尽管这可以适用于您,但我会强烈建议您将输入和输出分配分开以用于任何实际工作,因为像这样的别名输入/输出可能会阻止编译器优化更复杂的代码。

相关问题