NDKRenderScriptをNDKから使う時に、NDK付属のサンプル以外に参考になるのがあまり無いようなので簡単なメモを載せておきます。Android.mkまずは、Android.mkには次の項目を追加しておきます。$(PREBUILT_SHARED_LIBRARY)というのも付け加えておく必要があります。スタティックライブラリとして一旦別モジュールとしてビルドする場合には次のようにします。-lRScpp_staticApplication.mkApplication.mkにはSTLの指定が必要です。android-19としましょう。ここでandroid-19としていても、RenderScriptに関する限りはAPI19未満でも動きます。使う時は、Java側から呼び出すのであれば、自分で作った共有ライブラリに加えて、libRSSupport.soもロードする必要があります。{System.loadLibrary("RSSupport");System.loadLibrary("自前の共有ライブラリ名");}スクリプトで入出力のサイズが異なる場合これはNDKとは何の関係も無いけど、RenderScriptでは、普通はOpenGLのシェーダーと一緒で、入力データと出力データは同じサイズ(個数)にする必要があります。同じ位置のデータしか参照できません。時には入力と出力のサイズを変えたい時や、あるいは違う位置の値を参照したい時も有りますよね。いう時には、サイズは出力側に合わせて入力側にはダミーのデータをあてがいます。実際に使う入力値としてはグローバルのallocationを割り当てて、各関数内ではrsGetElementAt_xxxでアクセスします。こんなスクリプトを作ります。heightのデータとして返します。・・・あっ入力と出力のサイズが一緒だった(^_^;)違う位置を参照してるからいっか。0xff;}すると、ScriptC_test.hとScriptC_test.cppが出来ます。呼び出すにはこんな感じにします。objectrs->finish();}6行目では端末内でコンパイルされたスクリプトをキャッシュするためのディレクトリを渡しています。JavaのContext#getCacheDirメソッドで取得できるディレクトリを渡すのが一番無難だと思います。17行目がこの例でのみそで、スクリプト内でグローバル変数を宣言することで、それぞれ専用のsetter/getterが生成されるので、それを使ってスクリプト内のグルーバル変数にアクセスします。const;の2つの関数が生成されます。ちなみに、グローバル変数として定義するのは、型はもちろんサイズも入力/出力データと異なっていても構いません。Allocation(配列)に限らずintやfloatといったプリミティブな型でもOKです。通常は入力/出力データ配列の要素1つずつにしかアクセスできませんが、このようにしてグローバル変数として配列全体を渡すことで、任意の要素にアクセスすることが出来るようになります。関数名はrootに限りませんし、1つのスクリプトファイル内に複数の関数を含んでも大丈夫です。関数abcdと関数efghを定義すればそれぞれforEach_abcdとforEach_efghで実行できます。reserved.%d人のブロガーが「いいね」をつけました。このサイトでは利便性の向上の為に、機能的なクッキーと外部スクリプトを使用しています。同意しますプライバシー設定広告プライバシー設定このサイトでは利便性の向上の為に、機能的なクッキーと外部スクリプトを使用しています。どのクッキーとスクリプトが使用され、どのように訪問に影響を与えるかを左に示します。設定はいつでも変更できます。あなたの選択はサイトへの訪問に悪い影響を与えません。これらの設定は、現在使用しているブラウザとデバイスにのみ適用されます。広告このサイトでは、サイトや広告を改善するためにCookieを利用することがあります。本サイトを利用することでCookieの仕様に同意するものとします。