在Mdpi和Ldpi Android手机中缓慢渲染

时间:2013-02-14 08:02:34

标签: java box2d libgdx

您好,  我正在 LibGDX 的帮助下开发一款游戏,并在其中使用 Box2d 。问题是,当我在hdpi或平板电脑上运行游戏时它运行正常但是在 ldpi mdpi 的情况下,box2d机构没有相应的行为。

我认为,在这些手机上渲染需要花费更多的时间。那么,我如何为ldpi和mdpi手机优化我的游戏。我在world.step中传递的值是worldbox.step(Gdx.graphics.getDeltaTime(), 10, 2000);

感谢。

1 个答案:

答案 0 :(得分:0)

使用帧率作为时间步长是个坏主意。 Box2D手册说:

  

可变时间步长会产生可变结果,这使得调试变得困难。所以不要将时间步长与帧速率联系起来(除非你真的,真的必须这样做。)

此外,您对速度和位置迭代使用了太大的值。 Box2D手册说:

  

Box2D的建议迭代计数为8表示速度,3表示位置。

尝试固定时间步骤并推荐迭代计数如下:

float mAccomulated = 0;
float mTimeStep = 1.0f / 60.0f;
int mVelocityIterations = 8;
int mPositionIterations = 3;

void updatePhysicWorld()
{
    float elapsed = Gdx.graphics.getDeltaTime();

    // take into account remainder from previous step
    elapsed += mAccomulated;

    // prevent growing up of 'elapsed' on slow system
    if (elapsed > 0.1) elapsed = 0.1;
    float acc = 0;

    // use all awailable time
    for (acc = mTimeStep; acc < elapsed; acc += mTimeStep)
    {
        mWorld->Step(mTimeStep, mVelocityIterations, mPositionIterations);
        mWorld->ClearForces();
    }

    // remember not used time
    mAccomulated = elapsed - (acc - mTimeStep);
}