2012-01-03 8 views
0

私はAndroid向けゲームの基本的なカードゲームを開発しています。現時点ではAndroid 3.0をターゲットにしており、Asus Transformerタブレットでテストしています。私はSDKのLunar Landerの例と同様の単純なキャンバス操作でSurfaceViewオブジェクトを使用しています。 AndroidManifest.xmlにハードウェアアクセラレーションが有効になっています。Androidビットマップフレームレートの問題

私は実際にゲームのコーディングを終了しました。しかし、私はいくつかのフレームレートの問題を抱えています。私は基本的なゲームプレイの間に21-22 fpsのフレームレートを得ています。しかし、単純なアイキャンディのパーティクルエフェクトを追加することが予想されています。これは、許容できないフレームレートを確実に与えてくれます。問題を特定するのを助けるために、私はすべてのテキストとカードだけでなく、すべてのアニメーションのための図面をコメントアウトしました。これは私のフレームレートを31fpsに上げました。キャンバスをロックし、キャンバスを黒く塗り潰し、1280x800の背景ビットマップを描き、キャンバスのロックを解除して投稿するシンプルなゲームループが私に残されています。バックグラウンド描画を削除すると、フレームレートが約62 fpsに向上します。これは、lockCanvasのスロットリングのためにデバイスの最大値付近にある必要があります。単純なビットマップを描画するのは、そのようなコストのかかる操作ですか?私はそれが大きなテクスチャであることを知っていますが、私は大部分の背景テクスチャを効果的に使用する多くのゲームを見てきました。 OpenGLなしでまともなフレームレートを達成できますか?ログを見て、GCの問題ではないことを確認しました。

私がこれまでに試した唯一のことは、ビットマップが積極的に再スケーリングされていないことを確認することです。バックグラウンドpngを1280x696に変更しました。これは、アクションバーとメインのハニカムボトムバーのために調整された正確なサイズです。私は変更をdrawable-nodpiフォルダに配置しました。画像が拡大縮小されてはいけないと思います。ただし、これはフレームレートには影響しませんでした。フレームレートは31fpsに低下し、背景のみが描画されます。

私はフレームレートを向上させるために何ができるのですか?私は基本的に他のすべてを排除して以来、私の問題はビットマップの描画から来ているに違いないと思います。

+0

私はもう少しテストをしていて、いくつかの非常に奇妙な動作を見つけました。私はいくつかの異なるサイズで画像を作成しました。 1200x600の画像では、フレームレートの低下(61fps)はありません。 1260x650イメージの場合、フレームレートは31fpsに低下します。変更される唯一の変数は画像サイズです。何か案は? – BKW

答えて

1

RGB_565を私のSurfaceViewに、ARGB_8888を私のビットマップに使ったのと同様の問題がありました。ビットマップと同じものを使用するようにSurface Viewを設定すると、20fpsから59-60fpsになりました。変換は非常に遅いです。申し訳ありませんが、これは遅れていますが、多分それは他の人を助けるでしょう

+0

私に例を教えてもらえますか? – user2801184