1

我用 Box2d for AS3 创建了一个小游戏 - 我将精灵附加到舞台上,它们从底层的 Box2d 世界中获取位置。这些精灵大多是PNG。

当游戏运行时每次更新都会调用 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。所以当它在我的精灵下绘制盒子时会发生一些事情,导致它运行得更快..

干杯,

盖伊

4

2 回答 2

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 大大提高了性能

于 2010-01-24T14:33:46.200 回答
0

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

这只是一种解决方法。我现在研究一下box2d。如果我找到一个解决方案来获得相同的性能而无需 debugdraw,我会告诉你。

我正在使用 box2d 2.1a 顺便说一句。

于 2010-05-01T08:35:54.313 回答