2016-09-06 5 views
1

私はRenderScriptについてのGoogleのドキュメントに更新情報(https://developer.android.com/guide/topics/renderscript/compute.html)があることがわかりました。RenderScriptに関するGoogleのコードは機能しませんか?

rs_allocation tmp = rsCreateAllocation_uchar4(imageWidth, imageHeight); 
rsForEach(invert, inputImage, tmp); 
rsForEach(greyscale, tmp, outputImage); 

ので、私が知りたい: は1:これが起こる理由(私はSDKと思うので、私はそれをテストするためのコードですが、oはコードがあること

Error:(31, 23) error: implicit declaration of function 'rsCreateAllocation_uchar4' is invalid in C99 
Error:(31, 17) error: initializing 'rs_allocation' (aka 'struct rs_allocation') with an expression of incompatible type 'int' 

に関するエラーを得た使用しますapiは理由ですが、私はAS、SDK、SDKツールを最新版にアップデートしています)? 2:私は、第二の方法は、より高速なと思い

uchar4 RS_KERNEL root(uchr4 in, unit32_t x, uint32_t y) 

void RS_KERNEL root(uchr4* in, uchar4* out, unit32_t x, uint32_t y) 

の違いは何ですか?しかし私は確信が持てません。 ポインタをparamsとして使用する方法は、ポインタparamsを持つメソッドが高速であれば、root()(i test)という名前ではない関数に使用されます。RSで2つ以上のカーネル関数を使用する方法ファイル?

+0

どのファイルがそのエラーを生成していますか?それは.rsや.cppファイルから来ているようです。 –

+0

それはrsファイルからcoms。私はアンドロイドの開発者のウェブサイトからコードを取る。 –

答えて

4

rsCreateAllocation *()関数は、Android Nougat(APIレベル24以上)をターゲットにしている場合にのみ使用できます。私はあなたがRenderScriptターゲットAPIをはるかに下回って選択したので、このエラーが発生していると思います。

+0

thanks.build.gradleをrendererscriptTargetApi 24に変更しました。 –

+1

が動作し、ポインタをパラメータとして使用する機能とその機能を持たない機能の違いを知っていますか?私はテストして、uchar4 RS_KERNEL invert(uchar4 in、uint32_t x、uint32_t y)がvoid root(const uchar4 * in、uchar4 * out、uint32_t x、uint32_t y)より高速であることをテストし、この2つの方法の間に本質的な違いがありますか?または同じことが基礎となるアルゴリズムですか? –

+1

ポインタを渡す代わりに値渡しをすると、コンパイラは追加の最適化を行うことができます。ポインタを使用すると、エイリアシングが発生する可能性があります。これにより、オプティマイザが最適な作業を行えなくなります。 –

関連する問題