千位精灵表现不佳

时间:2019-06-04 17:32:22

标签: java opengl libgdx

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

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,polygonSpriteBatch上的maxRenderCalls-两个都是相同的FPS 禁用混合->不变,相同FPS

  1. 2k的精灵在桌面上将fps降至20以下是否正常? -(Core i5-3210M处理器(2.50GHz 1600MHz 3MB),NVIDIA®GeForce®GT630M)

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

1 个答案:

答案 0 :(得分:0)

我会尝试自己回答(随时发布更好的答案) 是正常的。

性能问题的主要原因是尺寸。 绘画的大小确实很重要,当我以十分之一的大小绘画时,即使有5万个精灵,我也会得到 30fps!

使用PolygonSpriteBatch时,即使启用了混合功能,我也可以得到更高的(48fps)!

也经常启用和禁用出血(我已经完成了1000次以上的帧处理),实际上会对性能产生负面影响。