绘制调试数据时,Flash中的Box2D运行速度更快

时间:2010-01-24 14:18:37

标签: flash actionscript-3 box2d

我用Box2d为AS3创建了一个小游戏 - 我有精灵附加到舞台上,从底层的Box2d世界中获取位置。这些精灵主要是巴布亚新几内亚。

当游戏使用DrawDebugData()运行时,每次更新都会调用它,它运行得很顺畅。然而,当我评论这个时,它运行起来很糟糕。在这两种情况下,我的所有精灵都被渲染出来。因此,当它绘制调试数据另外时,它似乎运行得更快(即在两种情况下我的精灵都在屏幕上!)

发生了什么事?绘制调试数据是否会弹出某种“渲染快速”开关?如果是的话,那是什么转换!?我在Box2D代码中看不到它。

function Update(e){
    m_world.Step(m_timeStep, m_velocityIterations, m_positionIterations);
    // draw debug?
    m_world.DrawDebugData();
    // with the above line in, I get 27fps, without it, I get 19fps.
    // that's the only change that's causing such a huge difference.
    doStuff();
}

有趣的是,如果我将调试绘制比例设置为与我的世界范围不同的值,它会减慢到19fps。所以当它在我的精灵下面绘制盒子时会发生一些事情,导致它运行得更快......

干杯,

2 个答案:

答案 0 :(得分:0)

private var gravity:b2Vec2 = new b2Vec2(0, 7.8);
private var doSleep:Boolean = false;
private var iterations:int = 10;
private var timeStep:Number = 1/30;

您可以与我们分享此设置吗? doSleep大大提高了性能

答案 1 :(得分:0)

去年测试box2d时遇到了同样的问题。我将alphafill和outline alpha设置为调试绘图的0:D或者你可以删除标志,这样它就不会调试关节等。

这只是一个解决方法。我现在要看看box2d。如果我找到一个解决方案来获得相同的性能w / o debugdraw,我告诉你。

我正在使用box2d 2.1a btw。