昨年の 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)