現在、TimerとCanvas.onDraw()
/canvas.drawBitmap
を使用して、SurfaceViewのフルスクリーンで1つのフレームアニメーションを表示しています。すべてのフレームは480x320ピクセルの解像度を持ち、描画時に画面の解像度に引き伸ばされます。これは、より速いデバイスでも静かに動作し、最大15fpsのフレームレートを実現します。アニメーションが高いフレームレートで表示されるので、アニメーションが開始する前に、すべてのフレーム(アニメーションはループする30の単一フレームで構成されています)をロードする必要があるという問題があります。通常16 MBのAndroidプロセスのための小さなヒープスペースが与えられると、私のテストデバイスのほとんどは30フレームすべてをメモリにプリロードすることができないので、代わりにOpenGLを使用することを考えています。 OpenGLを読むと、16MBのプロセスヒープスペース内でメモリが考慮されず、OpenGLを使用することもできます。AndroidでOpenGLを使用してフルスクリーンの単一フレームアニメーションを描画していますか?
私の質問は次のとおりです:OpenGLは、フレームレートを15fpsにするのに十分速く、テクスチャ(私の単一フレーム)を変更して表示するのに十分速いでしょうか?私はテクスチャの交換があまりにも頻繁にOpenGLを大幅に遅くすると言う記事を読んでいます。あなたはそれについて何か経験がありましたか? 15fpsの全画面テクスチャをスワップすることが実現できないと言うことができるのであれば、OpenGLを実行するのに時間を費やしたくありません。
編集:私は今のOpenGLを使用せずに、デフォルトのAndroid NDKを使用する技術を使用しています
。私のanswer hereを見てください。
テクスチャはフレームごとに1回しか変更されません。それほど頻繁ではありません。 – Alan
これは間違った問題を解決しようとしているように聞こえます。なぜ、メモリ内に非圧縮フルスクリーンビットマップが必要ですか? PC上の.aviに30フレームを構築することができない理由があれば、それを.apkのアセットとして組み込み、それをMediaPlayerで再生するだけです。 –
アニメーションはオーバーレイとして表示されるため、透明でなければなりません。残念ながら映画は透明ではありません。 –