1
我正在使用渲染腳本。我想傳遞一個數組的元素來渲染腳本,並且想要在渲染腳本中執行每個元素的平方並將數據返回到android框架的工作。rs和android之間的數據傳輸?
我想通過下面的代碼來做到這一點。
1.java代碼 2.RS代碼
但是通過這些代碼,這東西不是possible.willüPLZ告訴我什麼[R錯誤,我在做 這些代碼。
============================================== ==============================
Java代碼
public class SUM extends Activity {
private int[] input;
private int[] output;
private RenderScript mRS;
private Allocation mInAllocation;
private Allocation mOutAllocation;
private ScriptC_Sum mScript;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
input= new int[4];
input[0]=0;
input[1]=1;
input[2]=2;
input[3]=3;
output =new int[4];
createScript();
}
private void createScript() {
mRS = RenderScript.create(this);
mInAllocation = Allocation.createSized(mRS, Element.U32(mRS),4);
mOutAllocation = Allocation.createTyped(mRS,mInAllocation.getType());
mScript = new ScriptC_Sum(mRS, getResources(), R.raw.sum);
mScript.bind_v_in(mInAllocation);
mScript.bind_v_out(mOutAllocation);
mScript.invoke_square(mInAllocation,mOutAllocation);
}
}
======= ================================================== == RS碼
#pragma version(1)
#pragma rs java_package_name(com.cdacb.mars.summation)
#include "rs_types.rsh"
#include "rs_graphics.rsh"
#include "rs_core.rsh"
int32_t *v_in ;
int32_t *v_out;
void square(){
}
void root(int32_t *v_in,int32_t *v_out)
{
square();
}
如果你想繼續使用int而不是float,你可以只做「return * v_in * * v_in;」。在你的代碼中,你也想切換到2.f而不是2,因爲這意味着double-> float轉換(C99語言的一個更糟糕的方面)。 –