千精灵绘制的性能很差



我正在编写一个应用程序,我遇到了低 fps,我发现几乎所有的 CPU 时间都被 spriteBatch.draw(( 方法(大约一千个调用(消耗了。所以我创建了简单的绘图应用程序

public void render() {
    spriteBatch.begin();
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    for (int i = 0; i < 2000; i++) {
        spriteBatch.draw(tex, 0, 0);
    }
    spriteBatch.end();
}

该应用程序运行 18fps当我增加窗口大小时,它几乎填满整个屏幕 fps 下降到 7!,当窗口大小变小时,它以 60fps 运行,在全屏模式下我得到 20FPS(1600x900( - 比最大化窗口更好我只使用一种纹理(512、512 - png(,spriteBatch 上的 maxRenderCalls 是 2、5 在多边形精灵批处理上 - 两者都是相同的 FPS禁用混合 ->没有变化,FPS 相同

  1. 2k 的精灵在桌面上将 fps 降至 20 以下正常吗?- (酷睿 i5-3210M 处理器(2.50GHz 1600MHz 3MB(, 英伟达® GeForce® GT630M(

  2. 更改窗口大小会影响性能正常吗?

我会尝试自己回答(随意发布更好的答案(

这很正常。

性能问题的主要问题是大小。绘图大小真的很重要,当我以十分之一的大小绘制它时,即使有 50 000 个精灵,我也能获得 30fps

使用PolygonSpriteBatch时,我也可以获得更多(48fps(,即使启用了混合!

此外,过于频繁地启用和禁用出血(我每帧已经做了 1000+ 次(,确实会对性能产生负面影响。

最新更新