Java 删除glClear后的LibGdx怪异效果
我想删除glClear,这样我就可以设置一个对象的动画,当它在屏幕上移动时,它会以动画的方式显示图像,如果我包括glClear,这是不可能的。它在模拟器上工作,但当我把它放在我的手机上时,它就这样做了。我想这一定是dpi的事,有什么我能做的吗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
@覆盖
公共无效渲染(浮动增量){
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();
}