多年来,我在主页上维护了一个Tandy Color Computer Emulator applet。随着购买Incredible我决定做一个端口。在Android中实现这一目标并不需要很长时间,但我真的很惊讶它的运行速度有多慢。你可以从字面上看到像素画。我知道还有其他成功的Android模拟器,所以我一定做错了。
我的方法是使用SurfaceView进行渲染。有一个单独的线程运行虚拟6809 CPU。每当该线程更新模拟视频内存时,它就会调用带有Rect的SurfaceHolder.lockCanvas(),该Rect描述需要重新绘制的屏幕部分。然后它用生成的Canvas调用gfx例程......这是我在AWT / Swing中进行重绘()的地方。 gfx例程非常智能,可以只渲染clipRect中的内容。也许我仍然坚持使用AWT,但我想不出任何方法可以让这个东西以可接受的速度运行。我试图合并gfx调用,但这也不起作用。有什么想法吗?
答案 0 :(得分:0)
SurfaceView应该足够快。如果在剪辑区域之外,所有绘图例程都足够聪明,不能做任何事情,但如果需要,可以提前剔除调用。看起来您需要对自己的应用进行分析,看看您花了太多时间。