2016-07-15 15 views
2

レンダスクリプトで割り当てのすべてのセルを他の割り当てにコピーしようとしていました。アンドロイド開発APIリファレンスから私はこの方法、その署名サポートされていないメソッドへの呼び出しrsAllocationCopy1DRange in android.support.v8.renderscript

空隙rsAllocationCopy1DRange(rs_allocation dstAlloc、のuint32_t dstOff、のuint32_t dstMip、のuint32_tカウント、rs_allocation srcAlloc、のuint32_t れるsrcOff、のuint32_t srcMip)であるrsAllocationCopy1DRangeを得ました。


方法のためのGoogleの参照リンクはhttps://developer.android.com/guide/topics/renderscript/reference/rs_allocation_data.html

ですが、私は、スクリプトを実行するとき、それはandroid.support.v8.renderscriptエラーでサポートされていない方法rsAllocationCopy1DRangeにコールが

私のRSスクリプトが

未満であることを示しています
#pragma version(1) 
#pragma rs java_package_name(com.ravikant.rs) 
#pragma rs_fp_relaxed 

int width; 
int height; 

rs_allocation stateArr; 
rs_allocation stateNextArr; 

void __attribute__((kernel)) _copy(int32_t in) 
{ 
    int len=width*height; 
    rsAllocationCopy1DRange(stateArr,0,0,len,stateNextArr,0,0); 
} 

とJavaコード

float[] sideArr=new float[width*height}; 
Arrays.fill(sideArr,1); 
Allocation stateArrAlloc = Allocation.createSized(rs, Element.F32(rs), sideArr.length); 
Allocation stateNextArrAlloc = Allocation.createSized(rs, Element.F32(rs), sideArr.length); 
stateArrAlloc.copyFrom(sideArr); 
stateNextArrAlloc.copyFrom(sideArr); 

scriptC_copycells.set_width(width); 
scriptC_copycells.set_height(height); 
scriptC_copycells.set_stateArr(stateArrAlloc); 
scriptC_copycells.set_stateNextArr(stateNextArrAlloc); 
scriptC_copycells.forEach__copy(stateArrAlloc); 
です10

エラーのlogcat出力は

E/AndroidRuntime: FATAL EXCEPTION: RSMessageThread 
Process: com.ravikant.rs, PID: 2321 
android.support.v8.renderscript.RSRuntimeException: Fatal error 4097, 
details: Error: Call to unsupported function rsAllocationCopy1DRange in kernel at android.support.v8.renderscript.RenderScript$MessageThread.run(RenderScript.java:1313) 
+0

これに対応する解決策はありますか?私も同じ問題に直面しています –

答えて

2

です。logcatにはバグがあります。この種の呼び出しをRenderScriptカーネル内で行うことは許されません。この呼び出しは呼び出し可能な関数内でのみ行うことができます。あるいは、Java APIを使用して、このコピーをその側から行うことができます。

関連する問題