Java 删除glClear后的LibGdx怪异效果

Java 删除glClear后的LibGdx怪异效果,java,android,libgdx,Java,Android,Libgdx,我想删除glClear,这样我就可以设置一个对象的动画,当它在屏幕上移动时,它会以动画的方式显示图像,如果我包括glClear,这是不可能的。它在模拟器上工作,但当我把它放在我的手机上时,它就这样做了。我想这一定是dpi的事,有什么我能做的吗 @覆盖 公共无效渲染(浮动增量){ fbo.begin(); fbo=新帧缓冲区(Pixmap.Format.rgba888,Gdx.graphics.getWidth(),Gdx.graphics.getHeight(),false); 如果(!dec

我想删除glClear,这样我就可以设置一个对象的动画,当它在屏幕上移动时,它会以动画的方式显示图像,如果我包括glClear,这是不可能的。它在模拟器上工作,但当我把它放在我的手机上时,它就这样做了。我想这一定是dpi的事,有什么我能做的吗

@覆盖
公共无效渲染(浮动增量){
fbo.begin();
fbo=新帧缓冲区(Pixmap.Format.rgba888,Gdx.graphics.getWidth(),Gdx.graphics.getHeight(),false);
如果(!deckBuilder.isPlayingAnimation()){
Gdx.gl.glClear(GL20.gl\u颜色\u缓冲\u位);
}
Gdx.gl.glClearColor(39/255f、39/255f、198/255f、1);
舞台表演;
stage.draw();
if(timer.getUserObject()等于(“重置”))
{
timer.setUserObject(“”);
总时间=0;
}
如果(分钟<60 | |计数时间){
deltaTime=Gdx.graphics.getRawDeltaTime();//您可能更喜欢getRawDeltaTime()
totalTime+=deltaTime;//如果倒计时
分钟=((整数)总时间)/60;
秒=((整数)总时间)%60;
timer.setText((“”+(100+分钟)).substring(1)+:“+(“”+(100+秒)).substring(1));
}
其他的
{
如果(!setConstantTime)
{
setConstantTime=true;
timer.setText(“#!#%&”);
}
}
fbo.end();
}

您的错误是在渲染循环中创建帧缓冲区。顺便说一句,每帧泄漏一次。在丢失引用之前,必须始终释放帧缓冲区

在仿真器上,内存回收的方式一定导致您意外地得到了想要的东西。但现在您正在绘制上一帧的
fbo
,然后在屏幕上绘制的每一帧上都使用新分配的帧缓冲区覆盖引用

@Override
public void render(float delta) {
    fbo.begin();
    fbo = new FrameBuffer(Pixmap.Format.RGBA8888, Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), false);
    if (!deckBuilder.isPlayingAnimation()){
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    }
    Gdx.gl.glClearColor(39/255f, 39/255f, 198/255f, 1);

    stage.act();
    stage.draw();

    if (timer.getUserObject().equals("reset"))
    {
        timer.setUserObject("");
        totalTime = 0;
    }
    if (minutes < 60 || countTime) {
        deltaTime = Gdx.graphics.getRawDeltaTime(); //You might prefer getRawDeltaTime()

        totalTime += deltaTime; //if counting down

        minutes = ((int) totalTime) / 60;
        seconds = ((int) totalTime) % 60;
        timer.setText(("" + (100 + minutes)).substring(1) + ":" + ("" + (100 + seconds)).substring(1));
    }
    else
    {
        if (!setConstantTime)
        {
            setConstantTime = true;
            timer.setText("#!#%&");
        }
    }
    fbo.end();
}