Java Mdpi和Ldpi android手机中的慢速渲染

Java Mdpi和Ldpi android手机中的慢速渲染,java,box2d,libgdx,Java,Box2d,Libgdx,嗨, 我在LibGDX的帮助下开发了一个游戏,并在其中使用了Box2d。问题是,当在hdpi或平板电脑上运行我的游戏时,它运行正常,但在ldpi和mdpi的情况下,box2d主体不会相应地运行 我认为,在那些手机上渲染要花更多的时间。那么,我如何为ldpi和mdpi手机优化我的游戏。我在world.step中传递的值是worldbox.step(Gdx.graphics.getDeltaTime(),102000) 谢谢。使用帧速率作为时间步长是个坏主意。Box2D手册上说: 可变的时间步长会产

嗨, 我在LibGDX的帮助下开发了一个游戏,并在其中使用了Box2d。问题是,当在hdpi或平板电脑上运行我的游戏时,它运行正常,但在ldpimdpi的情况下,box2d主体不会相应地运行

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


谢谢。

使用帧速率作为时间步长是个坏主意。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);
}
float maccompulated=0;
浮动mTimeStep=1.0f/60.0f;
int MVELOCITY迭代=8;
int复合物=3;
void updatePhysicWorld()
{
float-appead=Gdx.graphics.getDeltaTime();
//考虑上一步的剩余部分
经过+=计算错误;
//防止慢速系统上“已用”的增长
如果(经过>0.1)经过=0.1;
浮动acc=0;
//利用所有可利用的时间
对于(acc=mTimeStep;acc<经过;acc+=mTimeStep)
{
M世界->步骤(mTimeStep、MVELOCITY迭代、混合);
mWorld->ClearForces();
}
//记住没有用过的时间
mAccomulated=经过-(acc-mTimeStep);
}

你的“世界”有多大?你的世界大小是用米还是用像素?@CodeNoob我的世界大小是480x720像素。那么你有一个480x720米的大世界,因为Box2D使用米系统,这应该有帮助: