RenderScript多个输入处理

在RenderScript中,默认情况下对应一个输入,一个输出。但是在实际使用过程中,有时需要有多个输入,多个输出。可以采用rs_allocation来处理。

 private void CreateScript(){
        	int[] s;
        	int[] s2,s3;
        	s=new int[10];
        	s2=new int[10];
        	s3=new int[10];
        	for(int i=0;i<10;i++){
        		s[i]=5;	
        	}
       	mRS=RenderScript.create(this);
       	In1=Allocation.createSized(mRS, Element.I32(mRS), 10);
    	In2=Allocation.createSized(mRS, Element.I32(mRS), 10);
       Out=Allocation.createSized(mRS, Element.I32(mRS), 10);
       Out2=Allocation.createSized(mRS, Element.I32(mRS), 10);	
        In1.copyFrom(s);
        
        for(int i=0;i<10;i++){
    		s[i]=10;	
    	}
        In2.copyFrom(s);
        
       
        
        mScript=new ScriptC_test(mRS, getResources(), R.raw.test);
        
        mScript.set_input2(In2);
        mScript.set_output2(Out2);
        mScript.forEach_root(In1,Out);
        Out.copyTo(s2);;
        Out2.copyTo(s3);
        	for(int i=0;i<10;i++){
        		Log.v("lucas","i="+i+"  "+s2[i]+"   "+s3[i]);
        		
        	}
        
        }

RS代码:

#include "rs_allocation.rsh"


rs_allocation input2;
rs_allocation output2;
int __attribute__((kernel)) root(int v_out,uint32_t x){
	rsSetElementAt_int(output2, x, x);
	return *(int*)rsGetElementAt(input2,x);
	
}

输出:

V/lucas   (25659): i=0  10   0
V/lucas   (25659): i=1  10   1
V/lucas   (25659): i=2  10   2
V/lucas   (25659): i=3  10   3
V/lucas   (25659): i=4  10   4
V/lucas   (25659): i=5  10   5
V/lucas   (25659): i=6  10   6
V/lucas   (25659): i=7  10   7
V/lucas   (25659): i=8  10   8
V/lucas   (25659): i=9  10   9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值