目前,我正在使用計時器和Canvas.onDraw()
/canvas.drawBitmap
在全屏幕SurfaceView上顯示單幀動畫。每一幀的分辨率爲480x320像素,並將在繪製時延伸至屏幕分辨率。這可以在更快的設備上安靜地工作,實現高達15 fps的幀速率。問題是我必須在動畫開始之前加載每一幀(動畫由30個循環的單幀組成),因爲動畫將以高幀率顯示。鑑於通常爲16 MB的Android進程的小堆空間,我的大多數測試設備都無法將所有30幀預加載到內存中,因此我正在考慮使用OpenGL代替。當我讀取OpenGL時,內存將不會被認爲在16 MB的進程堆空間內,使用OpenGL可能是另一種選擇。使用Android上的OpenGL繪製全屏單幀動畫?
現在我的問題是:OpenGL是否足夠快地改變和顯示紋理(我的單幀)足夠快,以達到15fps的高幀率?我讀過一篇文章說,交換紋理往往會顯着減慢OpenGL的速度。你們有沒有經驗?我不想花時間讓OpenGL運行,如果你已經可以說用15fps交換全屏紋理是不可行的。
編輯:
我現在用的是使用默認的Android NDK未做利用OpenGL的技術。看我的answer here。
你只會改變紋理每幀一次。這並不常見。 – Alan 2011-02-08 16:27:44
這聽起來很像你試圖解決錯誤的問題。爲什麼*需要* 30個未壓縮的全屏位圖在內存中?任何你無法在你的電腦上建立你的30幀到.avi的原因,包括作爲你的.apk資產,然後通過MediaPlayer播放它? – 2011-02-08 16:30:48