gpt4 book ai didi

java - 删除 glClear 后 LibGdx 的奇怪效果

转载 作者:行者123 更新时间:2023-12-02 10:38:54 25 4
gpt4 key购买 nike

我想删除 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com