2010-09-11 57 views
0

多年來,我在我的主頁上維護了一個Tandy Color Computer Emulator小程序。隨着購買令人難以置信的我決定做一個端口。在Android中實現它並不需要很長時間,但我真的很驚訝它運行速度很慢。你可以從字面上看到像素繪畫。我知道還有其他成功的Android模擬器,所以我必須做錯了什麼。SurfaceView足夠快速仿真?

我的方法是使用SurfaceView進行渲染。有一個獨立的線程運行虛擬6809 CPU。無論何時該線程更新模擬視頻內存,它都會用Rect調用SurfaceHolder.lockCanvas()來描述需要重繪的部分屏幕。然後使用生成的Canvas調用gfx例程...這是我在AWT/Swing中執行repaint()的地方。 gfx例程足夠聰明,可以呈現clipRect中的內容。也許我仍然堅持AWT,但我想不出有什麼辦法讓這件事情以可接受的速度運行。我試圖合併gfx調用,但是這也不起作用。有什麼想法嗎?

回答

0

SurfaceView應該足夠快。所有的繪圖例程都足夠聰明,如果你不想在剪輯區域之外做任何事情,但你可以提前剔除它。看起來你需要分析你的應用,看看你花了多少時間。

+0

謝謝羅曼。 SurfaceView足夠快。我現在每隔x個處理器週期就調用一個合適的剪輯的draw例程(而不是每次仿真器寫入「視頻內存」時調用例程)。快多了。 – 2010-09-16 14:51:53