我想删除glClear,以便可以对一个对象进行动画处理,并且当它在屏幕上移动时,它会显示动画效果的图像(如果添加了glClear则不会显示)。它可以在模拟器上运行,但是当我在手机上插入时,它可以运行。我认为这一定是dpi的事情,我能做些什么吗?
screenshot of my phone
@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();
}
最佳答案
您的错误是您正在渲染循环中创建一个FrameBuffer。顺便说一句,您每帧泄漏一次。在丢失引用之前,必须始终处理FrameBuffer。
在模拟器上,内存的回收方式一定导致您意外地获得了想要的东西。但是现在,您正在绘制到前一帧的fbo
,然后使用新分配的FrameBuffer覆盖参考,假设我假设您正在绘制到屏幕上的每一帧。
关于java - 移除glClear后的LibGdx怪异效果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53072364/