2010-09-11 81 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