From: Compute Renderscript overview
由於 Renderscript 為 Async 架構,因此當 RS 做完事後,希望他送個訊息到 Java 那層時,就會用到 rsSendToClient/rsSendToClientBlocking 等函數來使用,只是翻了文件後,僅有一句話介紹、沒有文件,更別說教學 Orz 後來發現網路上也有人在 stackoverflow 詢問,但一樣沒結果。幸運地,我找到了 Android 系統程式碼!
程式碼:
frameworks/ex/carousel
frameworks/ex/carousel/java/com/android/ex/carousel/carousel.rs
frameworks/ex/carousel/java/com/android/ex/carousel/CarouselRS.java
用法:
HelloCompute.java:
public class HelloCompute extends Activity {
// ...
private RSMessageHandler mRsMessage = new RSMessageHandler() {
public void run() {
switch(mID) {
default:
Log.e("mID","value:"+mID+",data[0]:"+mData[0]+",data[1]:"+mData[1]+", data[2]:"+mData[2]);
}
}
};
// ...
public void createScript() {
mRS = RenderScript.create(this);
mRS.setMessageHandler(mRsMessage);
mScript = new ScriptC_mono(mRS, getResources(), R.raw.mono);
mScript.invoke_fireInRS();
}
}
mono.rs:
#pragma version(1)
#pragma rs java_package_name(com.example.android.rs.hellocompute)
#include "rs_graphics.rsh"
void fireInRS() {
int data[3];
data[0] = 1;
data[1] = 2;
data[2] = 3;
rsSendToClient(1, data, sizeof(data));
}
作者已經移除這則留言。
回覆刪除感谢大神!!!!RenderScript国内的技术文章太少了~
回覆刪除