Android 4.0 対応、RenderScript のサンプル

昨年の 11月頃に掲載していた RenderScript のソースコードが
Galaxy Nexus Android 4.0 で動作しなかったので修正しました。

flatlib_ap02a.zip
flatlib_ap02b.zip
flatlib_ap02c.zip
flatlib_ap02d.zip

Constant (Uniform) の初期値を Java から書き込んでいる部分が
原因でした。RenderScript 上で書きこまなければならなかった
ようで、そのように修正しています。

例えば ap02d では RenderScript 側で初期化用の関数を作成し
Java から invoke で呼び出しています。

// RenderScript
~
void setup()
{
    vconst->CameraPosition.x= 0.0f;
    vconst->CameraPosition.y= 0.0f;
    vconst->CameraPosition.z= 3.0f;
    vconst->CameraPosition.w= 0.0f;
    ~
}

最後に初期化コードを呼び出しておく。

// Java
    ~
    mScript.set_rstate( rstate );
    mScript.bind_vconst( geometry_const );
    mScript.bind_mconst( material_const );
    mScript.bind_light( light_const );

    mScript.invoke_setup(); // 初期化関数の呼び出し

    mRS.bindRootScript( mScript );

関連エントリ
Android 3.x RenderScript で 3D モデルのライティング
Android 3.x RenderScript (5) 任意の 3D モデルを描画する
Android 3.x RenderScript (4) script で頂点を書き換える
Android 3.x RenderScript (3) 独自シェーダーの割り当てとメッシュの描画(2D)