所以我基本上创建了一个我希望将来用于其他项目的2D物理引擎。 这里唯一的问题是我的Surface View的性能。 我每秒获得60次逻辑更新,但无论我做什么,每秒只有6帧。 如果我在计算线程中调用draw()方法,我得到6 fps。 如果我创建一个只绘制的全新线程,在循环中没有任何延迟
@Override
public void run() {
while(running) {
if(holder.getSurface().isValid()) {
canvas = holder.lockCanvas();
canvas.drawColor(Color.DKGRAY);
for (GameObject object : objects) {object.draw(canvas);}
holder.unlockCanvasAndPost(canvas);
}
gs.totalFrames++;
}
}
(gs = Game Surface)我得到6 fps。我的游戏对象的draw()函数非常简单:
public void draw(Canvas canvas) {
canvas.drawCircle((float) x, (float) y, 10, paint);
}
为什么表现如此糟糕? (我只有5个游戏对象,所以5个圈子,这根本不应该是性能问题!) 我也尝试过延迟发布的可运行的帖子,但这也很糟糕。 从线程调用GameSurface中的draw()函数而不是直接在其中绘图,并没有改变任何东西。微小的延迟也没有改善它。
我是否以某种不应该使用的方式使用SurfaceView? 有什么问题?