gpt4 book ai didi

android - 加载 TextureAtlas 后,它的 fps 率会下降一段时间

转载 作者:太空狗 更新时间:2023-10-29 16:40:47 25 4
gpt4 key购买 nike

stackoverflowers 和其他好人,经过两天的尝试,我有一个问题不知道如何解决:我有 libgdx 项目(我正在使用舞台和 Actor ,但现在这并不重要),我在评论中添加了所有无用的东西,问题很简单:

  1. 先设置空白屏幕,几 (4-5) 个渲染的增量约为 0.04 秒,然后约为 0.01
  2. 设置屏幕,我在调整大小方法中创建了一个新的 TextureAtlas 实例 - 它加载两个 1024 x 1024 纹理大约需要 0.5-0.8 秒,然后开始渲染,前几个渲染 (5) 有大约 delta 时间0.1 秒(在 SGS II 上)或大约 0.2 - 0.3 秒(在 SG ACE 上)——这确实是个大问题,因为当你有一些淡入效果或屏幕开始处的任何动画时,你可能会看到后半部分动画的 - 是的,当它具有如此低的 fps 评级时......没有任何东西正在绘制(即使它说渲染已在 0.3 秒后调用,我也看不到任何东西)

我的问题是:TextureAtlas 应该在调用时加载每个页面图像,为什么加载后会影响运行?或者至少我是否可以知道它何时会正常运行、绘图?

非常感谢您的回答!

显然这是代码,但它很简单:

public class App extends Game {

@Override
public void create() {
Gdx.app.log( this.LOG, "Creating game" );
fpsLogger = new FPSLogger();
setScreen( new IntroScreen(this) );

}
}

简介:

public class IntroScreen implements Screen {
@Override
public void resize(
int width,
int height )
{
super.resize( width, height );
Gdx.app.log("IntroScreen", "Resize start: " );
atlas = new TextureAtlas( Gdx.files.internal( "image-atlases/pages-info.atlas" ) );
Gdx.app.log("IntroScreen", "Resize finished: " );
}

@Override
public void render(
float delta )
{
Gdx.gl.glClearColor( 0f, 0f, 0f, 1f );
Gdx.gl.glClear( GL20.GL_COLOR_BUFFER_BIT );

Gdx.app.log( "IntroScreen", "Delta: " + delta );

// stage is empty
stage.act( delta );
stage.draw();
}
}

这是 LogCat 的输出:

08-09 01:09:53.689: I/IntroScreen(9757): Resize start: 
08-09 01:09:54.004: I/IntroScreen(9757): Resize finished:
08-09 01:09:54.009: I/IntroScreen(9757): Delta: 0.10668343
08-09 01:09:54.009: I/IntroScreen(9757): Delta: 0.1037551
08-09 01:09:54.024: I/IntroScreen(9757): Delta: 0.1006427
08-09 01:09:54.039: I/IntroScreen(9757): Delta: 0.09953054
08-09 01:09:54.054: I/IntroScreen(9757): Delta: 0.099971004
08-09 01:09:54.074: I/IntroScreen(9757): Delta: 0.009933725
08-09 01:09:54.089: I/IntroScreen(9757): Delta: 0.012701442
08-09 01:09:54.104: I/IntroScreen(9757): Delta: 0.015878525
08-09 01:09:54.124: I/IntroScreen(9757): Delta: 0.016689042
08-09 01:09:54.144: I/IntroScreen(9757): Delta: 0.017476525
08-09 01:09:54.159: I/IntroScreen(9757): Delta: 0.017719833
08-09 01:09:54.174: I/IntroScreen(9757): Delta: 0.017750284
08-09 01:09:54.189: I/IntroScreen(9757): Delta: 0.017803017
...

感谢您的帮助。

最佳答案

在 Android 上,增量时间在最后 5 帧上被平滑(平均)。如果加载 TextureAtlas(或任何其他 Assets )的过程使该帧花费的时间更长(很可能会如此),那么您将在接下来的 5 帧左右看到更高的增量时间。如果您想要未平滑的增量,您可以尝试 getRawDeltaTime。当然,您必须忽略传递给渲染方法的增量时间,并在渲染方法开始时从 Gdx.graphics.getRawDeltaTime() 获取原始增量。

关于android - 加载 TextureAtlas 后,它的 fps 率会下降一段时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18137782/

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