jbox2d オブジェクトを surfaceview に描画して遊んでいますが、取得しているフレームレートに実際には満足していません (10-13、画面上に複数のオブジェクトがある場合/デバッグではさらに 26- 30)。
while (isRun)
{
Canvas canvas = holder.lockCanvas();
_update(canvas); /// <- call to update
holder.unlockCanvasAndPost(canvas);
}
...
canvas.drawColor(0xFF6699FF);
for ( Body b = world.getBodyList(); b!=null; b = b.getNext() ) // <- cycle through all the world bodies
{
rlBodyImage bi = new rlBodyImage();
bi = (rlBodyImage) b.getUserData();
float x = b.getPosition().x*scale + wOffset + camera_x + camera_x_temp;
float y = b.getPosition().y*-scale + hOffset + camera_y + camera_y_temp;
canvas.save();
canvas.translate( x - (bi.getImage().getWidth()*bi.getCoof()*scale)/2 , y - (bi.getImage().getHeight()*bi.getCoof()*scale)/2 );
canvas.scale( bi.getCoof()*scale , bi.getCoof()*scale );
canvas.rotate( (float) -(b.getAngle() * (180/Math.PI)) , bi.getImage().getWidth() /2 , bi.getImage().getHeight() /2 );
canvas.drawPicture(bi.getImage()); // <- draw the image assossiated with current body on canvas
canvas.restore(); // images are stroed as "Pictures" , extracted from SVGs.
}
もちろん、より単純なSVGを使用する以外に、物事をスピードアップする方法はありますか? :) ありがとう!
編集 :
はい、PNG に切り替える必要があります。PNG の方が FPS レートが高くなります。
ベクトル画像 = 10...13...16 FPS
PNG のみ = 35...40+ FPS
スケーリング付き PNG = 32...37+ FPS
スケーリングと回転を含む PNG = 27+ FPS